验证插件一次处理两个表单,错误
Validation plugin processing two forms at once, error
我已经为jquery构建了这个插件,它可以对引导样式的表单进行表单验证。当我前几天在开发中使用它时,我发现了一个错误,当我在同一页面上的两个表单上使用它时。当我尝试提交其中一个表单时,验证器脚本将验证两个表单,并且由于在空表单中发生错误,因此两者都不会提交。所以我想弄清楚为什么这是
工作原理
$.validator();
为插件。它接受一系列选项,相关文档可以在这里找到,https://github.com/MarkHill89/validator。当插件初始化时,它为每种类型的输入初始化keyup
、change
、select
和click
功能,并且验证器将在您进行验证时进行验证。
$.validator.check()
是用户在尝试提交表单时调用的返回值。这个方法返回一个布尔值,仅此而已。
我的想法过程是,因为验证器附加到两个单独的表单,它不应该只检查那些表单,它附加到初始化?我认为这是正确的,因为当我做这样的事情:
$('#form').submit(function(e){
e.preventDefault();
if($(this).validator.chek()){
//do stuff here
}
});
那么,由于它是通过引用传递给附加对象的,并且该对象是活动元素,那么其他形式(此非活动对象)根本不应该触发,对吗?这就是我困惑的地方。
我在做什么
javascript
$('#signupform').validator({
notEmpty : ['#email_address', '#password', '#first_name', '#date_of_birth'],
isDateTime : ['#date_of_birth'],
isEmail : ['#email_address'],
validPassword : ['#password'],
});
// submitting the sign-up form
$('#signupform').on('click', '.btn-primary', function(e){
e.preventDefault();
$('body').spin('large');
if($('#signupform').validator.check()){
var data = {
callback : 'registerUser',
parameters : {
email_address : $('#email_address', this).val(),
password : $('#password', this).val(),
first_name : $('#first_name', this).val(),
date_of_birth : $('#date_of_birth', this).val()
}
};
$.ajax({
url : "$APP_BASE/assets/server/callbacks.php",
type : 'POST',
data : data,
dataType : "JSON",
success : function(response){
$('body').spin(false);
if(!response.errors){
bootbox.alert(response.success_message);
$('#signupform')[0].reset();
}else{
bootbox.alert(response.error_message);
}
}
});
}else{
$('body').spin(false);
}
});
// validating the signin form
$('#signinform').validator({
notEmpty : ['#signin_email_address', '#signin_password'],
isEmail : ['#signin_email_address']
});
// submitting the sign-in form
$('#signinform').on('click', '.btn-primary', function(e){
e.preventDefault();
if($('#signinform').validator.check()){
alert('good');
}else{
alert('bad');
}
});