我遇到了jQuery Validation插件的问题。 当我定义自定义submitHandler时,它会在第一次验证运行后存储。 我正在使用submitHandler通过AJAX请求发送Object,但是当事件触发后更改对象时,它不会在提交处理函数中更改。 有没有办法在每次事件触发后刷新提交处理程序?
我的代码
$('.request-telephone-form-submit').click(function(){
var thisForm = $(this).closest('form');
var postVars = new Object();
postVars.name = $('.request-name').val();
postVars.phone = $('.request-phone').val();
thisForm.closest('form').validate({
rules:
{
Name: {
required: true,
},
Telephone: {
required: true,
}
},
submitHandler: function(){
$.ajax({
type: 'POST',
url: '...',
data : postVars,
success : function(response) {
}
});
}
})
});
答案 0 :(得分:1)
你在这里遇到了一些错误。
将$.validate
来电移出click
处理程序,然后直接在$(document).ready
块中执行:
$(document).ready(function(){
$('#formID').validate({
//options here
});
});
如果您的$('.request-telephone-form-submit')
是表单中的提交按钮,则会在单击按钮时自动验证。如果表单根据您的rules
进行验证,则会调用submitHandler函数。那时你可以像这样收集你的帖子变量:
submitHandler: function(form){
var postVars = new Object();
postVars.name = $('.request-name').val();
postVars.phone = $('.request-phone').val();
$.ajax({
type: 'POST',
url: '...',
data : postVars,
success : function(response) {
}
});
}
答案 1 :(得分:0)
尝试处理表单标记上的事件并使用更好的jQuery方式的$('form.formClass').on('submit', function(){})