使用Bootstrap Validator (http://formvalidation.io/)的表单没有控制台错误,直到我需要在页面上放置多个表单。现在,当我运行$(form).each()时,我得到了太多的递归错误。
$('form').each(function(){
var form_id = $(this).attr("id");
$(this).bootstrapValidator({
message: 'This value is not valid',
fields: {
email: {
validators: {
notEmpty: {
message: 'The email is required and cannot be empty'
},
emailAddress: {
message: 'The input is not a valid email address'
}
}
}
}
}).on('success.form.bv', app.form_handler);
});
下面是javascript app.form_handler:
app.form_handler = function( evt ){
evt.preventDefault();
app.$ajax_form = $(evt.target);
var serialized_data = app.$ajax_form.serialize();
app.post_ajax( serialized_data );
};
然后post_ajax函数…
app.post_ajax = function( serial_data ){
var post_data = {
action : 'cm_ajax',
nonce : cm_ajax.nonce,
serialized : serial_data,
};
$.post( cm_ajax.ajax_url, post_data, app.ajax_response, 'json' )
};
如果有一个表单不遵循Bootstrap表单结构,则可能发生Too Much Recursion Error issue
。参见写作形式部分。
同时,$(form)
实际上会选择页面中的所有表单。所以,要么检查页面上的所有表单,以确保他们都使用标准的引导表单标记,或使用更严格的选择器,如$('#form1, #form2')
这触发了一个错误,因为我是作为管理员登录WordPress的(这意味着页面上有很多隐藏的表单)。因此,$(表单)。每个函数都在每个表单上运行,而这些表单没有使用标准的Bootstrap标记,从而触发错误。
我通过添加一个自定义类到我想要的验证器运行的形式,然后添加了一个IF子句,只运行验证器如果($(this).hasClass('bootstrapFormClass')){…}
这个工作正常,现在验证器和我所有的表单工作正常