当我点击按钮时,我有一个在nyroModal窗口中弹出的表单(signup.php):
<input value="Edit" class="nyroModal" type="button" href="signup.php">
我想在提交表单之前使用某种形式的AJAX验证(例如,检查是否已经使用了用户名)。
我记得以下几点:当用户点击“提交”按钮时。它使用onClick
调用javascript函数,将所需字段发送到PHP脚本,该脚本返回字段是否有效。然后,如果该字段无效,它会通知用户,但是当该字段有效时,它会通过$('#formid').submit();
之类的内容提交表单。理论上很容易。
BUT
问题是,当nyroModel从URL获取新表单,并在DOM中创建包含其内容的div时,Firefox会完全忽略任何<script>
标记。使用Firebug,我可以看到它实际上获得了响应的<script>
标签,但Firefox忽略了它们。此外,我无法在调用模型的页面上创建jQuery函数,因为在创建文档时,该表单在DOM中尚不存在。
任何想法如何解决这个问题?
答案 0 :(得分:1)
尝试向表单添加提交处理程序:
onClick='return frmSubmit()'
在此处理程序中,首先序列化表单的数据,然后将其提交给验证脚本。发出请求后请确保return false
,因为它是异步完成的。在响应回调中,您实现以下内容:如果响应指示输入有效,则以编程方式使用.submit()
- 方法提交表单。但是,如果响应表明出现了问题(您必须以JSON格式提供反馈),请在表单中附加一些建设性的反馈,供用户阅读。
不要忘记捕获按键事件,并在按下Enter时阻止提交表单,因为它会绕过验证功能。
而且,嗯,一个建议:最好在客户端进行所有验证,这通常就足够了。您可能听说过可以规避客户端验证,因此仍然需要进行服务器端检查。但是,我总觉得如果用户认真地认真对待系统,那么就没有必要提供建设性的反馈。指示失败的简单消息就足够了。所以,首先用普通的Javascript检查输入。如果出现问题,请提供反馈。但是,如果服务器收到无效输入(这意味着已绕过客户端验证),则只通知用户他失败了。
答案 1 :(得分:0)
你可以使用类似的东西:
onClick='javascript: return myValidationFuncion()
你的函数会检查值是否有效, 即在那里打电话给你的网络服务。 如果值无效,则只返回false以停止执行。
ķ