AJAX和jQueryvalidation问题
所以我陷入了这个死胡同。 我有AJAX脚本和jQuery Validation插件。 使用此脚本,当我的页面加载空联系表单时自动提交。 如果我移动或添加$('#submit').click(function () {
通过AJAX脚本部分,正好在$(document).ready(function() {
然后提交它忽略我的validation表单。
任何帮助将不胜感激。
var captcha_a = Math.ceil(Math.random() * 10); var captcha_b = Math.ceil(Math.random() * 10); var captcha_c = captcha_a + captcha_b; function generate_captcha(id){ var id = (id) ? id : 'lcaptcha'; $("#"+id).html(captcha_a + " + " + captcha_b + " = "); } $(document).ready(function() { $('#submit').click(function () { jQuery.validator.addMethod("math", function(value, element, params) { return this.optional(element) || value == params[0] + params[1]; }, jQuery.format("Please enter the correct value for {0} + {1}") ); $("#commentform").validate({ rules: { captcha: { math: [captcha_a, captcha_b] } } }); }); }) $(document).ready(function() { var name = $('input[name=name]'); var phone = $('input[name=phone]'); var email = $('input[name=email]'); var reason = $('select[name=reason]'); var info = $('textarea[name=info]'); var data = 'name=' + name.val() + '&phone=' + phone.val() + '&email=' + email.val() +'&reason=' + reason.val() + '&info=' + encodeURIComponent(info.val()); $('.loading').show(); $.ajax({ url: "ajaxformtoemail.php", type: "GET", data: data, cache: false, success: function (html) { if (html==1) { $('.form').fadeOut('slow'); $('.done').fadeIn('slow'); } else alert('Sorry, unexpected error. Please try again later.'); } }); return false; });
你的ajax
在页面加载时运行,因为没有什么能阻止它。 您需要将ajax
代码放在事件处理程序中,这样只有在表单通过validation时才会调用它。
以下是Validation Plugin正确实现的示例。 而且您不需要将validate()
放在单击处理程序中。 Validation插件内置了一堆自己的处理程序,包括一个在表单通过validation时触发的submitHandler
。
validation插件文档
一些方面问题……
-
如果使用适当的缩进和标准格式,您的代码将更容易阅读和故障排除。
-
不需要使用重复的
document.ready
函数。 一切都在一个人的内心。 -
与#2类似,您不需要单独的
标记集来包含您的代码。 一切都可以封闭一次。
- 解析jQuery AJAX响应
- SAPUI5等待Deferred-Object //等待.done()函数
- 在asp.net webform上加载表单的Jquery Ajax
- jQuery.ajax在服务器上给出了“TypeError:无法读取null的属性’documentElement’,但不是本地的
- 升级到v1.5时出现Jquery ajax错误
- SetInterval函数不适用于PHP文件
- 如何使AJAX请求看起来像常规的正常请求
- jQuery ajax请求被阻塞因为Cross-Origin
- 脚本导致“拒绝执行内联脚本:要么’unsafe-inline’关键字,哈希……或者nonce才能启用内联执行”