1

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

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

我想在提交表单之前使用某种形式的 AJAX 验证(例如,检查用户名是否已被使用)。

我想到了以下几点:当用户单击“提交”按钮时。它调用 javascript 函数onClick,将所需字段发送到 PHP 脚本,该脚本返回字段是否有效。然后,如果该字段无效,它会通知用户,但当该字段有效时,它会通过类似$('#formid').submit();. 理论上很容易。

问题是,当 nyroModel 从 URL 获取新表单并在 DOM 中创建一个包含内容的 div 时,Firefox 完全忽略了任何<script>标签。使用 Firebug,我可以看到它实际上获取了<script>带有响应的标签,但 Firefox 忽略了它们。另外,我无法在调用模型的页面上创建 jQuery 函数,因为创建文档时,DOM 中还不存在表单。

任何想法如何解决这个问题?

4

2 回答 2

1

尝试向表单添加提交处理程序:

onClick='return frmSubmit()'

在这个处理程序中,您首先序列化表单的数据,并将其提交给验证脚本。确保return false在发出请求之后,因为它是异步完成的。在响应回调中,您实现以下内容:如果响应表明输入有效,则使用 - 方法以编程方式提交表单.submit()。但是,如果响应表明有问题(您必须以 JSON 格式提供反馈),请将一些建设性的反馈附加到表单中以供用户阅读。

不要忘记捕获 keypress 事件,并防止在按下 Enter 时提交表单,因为它会绕过您的验证功能。

而且,嗯,一个建议:最好先在客户端进行所有验证,这通常就足够了。您可能听说可以绕过客户端验证,因此仍然需要进行服务器端检查。但是,我总觉得如果用户决定认真地搞乱系统,那么就没有必要提供建设性的反馈。指示失败的简单消息就足够了。因此,首先使用纯 Javascript 检查输入。如果有问题,请提供反馈。但是,如果服务器接收到无效输入(这意味着客户端验证已被绕过),只需通知用户他失败了。

于 2009-08-27T10:46:11.520 回答
0

你可以使用类似的东西:

onClick='javascript: return myValidationFuncion()

您的函数将检查该值是否有效,即在那里调用您的 Web 服务。如果值无效,只需返回 false 以停止执行。

ķ

于 2009-08-27T10:26:57.830 回答