我有一个表格(signup.php),在一个窗口nyroModal时弹出我点击一个按钮:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

我想提交表单之前使用某种形式的AJAX的验证(以检查用户名已经采取,例如)。

我不得不记住以下:当用户点击“提交”按钮。它调用onClick发送所需的字段PHP脚本,它返回的字段是否有效的JavaScript功能。然后,如果该字段是无效的,它会通知用户,但在该领域是有效的,它通过像$('#formid').submit();提交表单。在理论上很容易做到。

<强> BUT

问题是,当nyroModel获取从一个URL的新形式,并与在其中的内容的DOM来创建一个div,火狐完全忽略任何<script>标签。用Firebug,我可以看到它实际上与响应得到<script>标签,但Firefox会忽略它们。另外,我无法在这个网页,该模型是从所谓的,因为在创建文档时,形式不存在DOM还上创建一个jQuery函数。

任何想法如何解决此问题?

有帮助吗?

解决方案

尝试添加提交处理程序的形式:

onClick='return frmSubmit()'

在此处理程序,首先序列化格式的数据,并提交这验证脚本。确保发出请求后return false,因为它是异步完成的。在响应回调,需要实现以下:如果响应指示输入是有效的,你编程与.submit()法提交表单。但是,如果该效应初探表明,什么是错的(你必须供应JSON格式反馈),附加一些建设性的反馈意见的形式供用户阅读。

当按下回车不要忘记赶上按键事件,并阻止提交表单,因为它会绕过你的验证功能。

和,嗯,一个建议:它可能会更好做在客户端验证与启动,这通常是不够的。你可能听说客户端验证可以规避,所以仍然需要服务器端检查。不过,我总觉得,如果一个用户决定惹系统严重的话,就没有必要提供建设性的反馈意见。一个简单的消息,指示失败就足够了。因此,首先检查与普通的JavaScript输入。如果事情是错的,提供反馈。然而,如果服务器接收无效的输入(这意味着该客户端的验证已经绕过),只是通知他失败的用户。

其他提示

您可以使用类似:

onClick='javascript: return myValidationFuncion()

如果你的函数会检查该值是否有效, 即让你的Web服务调用那里。 如果值不是有效的,简单地以停止执行返回false。

ķ

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top