结合JQueryvalidation,然后是ajax发布
我确信这很简单,但我是JQuery的新手。 我使用JQuery插件validation电子邮件地址,这是有效的,代码是:
$(document).ready(function () { $("#email").click(function () { $(this).attr({value: ''}); }); $("#subscribe-form").validate(); });
我当时想要做的是使用ajaxpost发布电子邮件地址,再次这个代码在没有validation器的情况下工作正常:
$(document).ready(function () { $('#submit').click(function () { var email = $('#email').val(); var data = "email=" + email; $.ajax({ type: "POST", url: "subscript.php", data: data, }); }); });
我似乎无法做到的是将它们两者结合起来,这样如果电子邮件有效,它就会发布。 我非常感谢有关如何做到这一点的帮助。
非常感谢
可以通过传入具有各种配置选项的对象来配置.validate()
。 在这种情况下,将submitHandler
与回调设置为表单提交代码应该可以完成这项工作。
我还清理了一些示例代码,以向您展示如何编写更多惯用的jQuery。
-
我使用了
jQuery.post()
而不是jQuery.ajax()
因为jQuery.ajax()
是一个低级方法,仅在你想要自定义AJAX请求的行为时使用,就像我们如何使用自定义.validate()
的行为。 -
可以通过调用
.serialize()
来准备发布表单的所有输入。 这将准备一个URL编码的键值字符串,如name=John+Doe&email=john%40doe.com
,然后可以作为POST的数据。
例
$(document).ready(function() { $('#myForm').validate({ submitHandler: function(form) { $.post('subscript.php', $('#myForm').serialize()); } }); });
你应该能够使用submitHandler
选项,它本质上是一个回调函数,在validation表单时调用它:
$('#submit').click(function () { $("#subscribe-form").validate({ submitHandler: function(form) { //do submit } }); });
当表单有效时,回调处理实际提交。 获取表单作为唯一参数。 替换默认提交。 在validation后通过Ajax提交表单的正确位置。
在调用ajax调用validation之前,您可以执行以下操作:
if (!$('form').valid()) { return false; }
在进行.ajax()
调用之前,请在继续使用if ($('#subscribe-form').valid()) { ... }
之前检查表单是否有效。