如果触发了我的必填字段,则会阻止我的提交按钮。如果我填写,我必须在输入外单击以再次验证该字段,因此必须按两次提交。
如果提交处理程序导致此问题,是否有任何想法?
// FORM
// validate enquiry form
var product_form = jQuery('#product_enquiry_form');
jQuery(product_form).validate({
onkeyup: true,
submitHandler: product_enquiry_submit,
errorElement: 'div',
wrapper: false,
errorPlacement: function(error, element) {
error.insertBefore(element); // default function
}
});
// submit enquiry
function product_enquiry_submit(){
jQuery.ajax({
type: 'POST',
url: jQuery(product_form).attr( 'action' ) + '?ajax=true',
dataType: 'text',
data: jQuery(product_form).serialize(),
success: function(data){
if (data == 'SUCCESS') {
jQuery(product_form).fadeOut(400, function() {
jQuery('.message-sent').slideDown(400);
});
}
else if (data == 'BADCODE') {
// robot submitting honeypot
}
else {
alert('Message not sent, please try again.');
}
}
});
}
答案 0 :(得分:0)
一系列问题可能导致此问题。
1)var product_form = jQuery('#product_enquiry_form');
您的product_form
变量已包含jQuery()
,因此在引用它时,您无需再次将其包含在jQuery()
内。你已经在好几个地方做过这个。
jQuery(product_form).validate({ ...
这就足够了......
product_form.validate({ ...
2)true
不是onkeyup
的有效值。默认情况下已启用此选项,因此将其设置为true
可能会破坏事物。仅将其设置为false
或函数。否则,就把它留下来。请参阅:http://jqueryvalidation.org/validate/#onkeyup
3)wrapper
选项应该是一个“字符串”,表示像li
等HTML元素,而不是布尔值false
。如果您不需要包装label
元素,请保留此选项。请参阅:http://jqueryvalidation.org/validate/#wrapper
否则,您的代码似乎工作正常: