我有一些问题,充分验证我的数据与验证器插件。
我有两个字段: fieldOne和fieldTwo。然后我有两个PHP文件,process.php和processfailed.php。
现在我有很多条件。
如果fieldOne和fieldTwo都是空的,我希望将错误显示给用户,但不需要调用PHP。
如果其中一个字段具有有效数据,而另一个字段具有无效数据或为空数据,则我希望它调用process.php (我不希望发生验证错误事件)。
只有当两个字段都有无效的数据时,我才希望在验证错误事件中调用processfailed.php。
到目前为止,我所掌握的代码是(删除了一些部分以缩短代码)。
var validator = $("#my_form").validate({
rules: {
fieldOne: {
require_from_group: [1, '.datagroup'],
maxlength: 40
},
fieldTwo: {
require_from_group: [1, '.datagroup'],
minlength: 8
}
},
groups: {
datagroup: "fieldOne fieldTwo"
},
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "process.php",
data: {
'fieldOne': $("#fieldOne").val(),
'fieldTwo': $("#fieldTwo").val()
}
})
return false;
},
invalidHandler: function (form, validator) {
/* Submit the form even if validation fails: */
$.ajax({
type: "POST",
url: "processfailed.php",
data: {
'fieldOne': $("#fieldOne").val(),
'fieldTwo': $("#fieldTwo").val()
}
})
return false;
}
});
关于它们都是空的,目前它会向用户显示错误,但它似乎也在调用processfailed.php (我不希望在这种情况下调用任何php文件)。
如果我向一个字段提供有效的数据,而另一个字段为空,这似乎是可行的。
如果我向一个字段提供有效的数据,而将无效的数据提供给另一个字段,这似乎是在应该调用processfailed.php时调用process.php (只要一个字段是有效的,这是可以的)。
如果我向这两个字段提供无效的数据(它们都失败了验证),那么processfailed.php似乎应该被调用。
因此,如何处理两个字段都为空(不调用任何php文件),以及如果一个字段有效,而另一个字段调用process.php而不是processfailed.php。
任何建议都很感激。
发布于 2015-06-06 20:52:39
对于两个字段都为空的第一个条件,只需在invalidHandler
方法中放置一个if-语句即可。
为了在其中一个字段有效时不对另一个字段应用验证,可以使用规则的depends
属性。
$("#my_form").validate({
rules: {
fieldOne: {
require_from_group: [1, '.datagroup'],
maxlength: {
param: 2,
depends: function(element) {
var valTwo = $('#fieldTwo').val();
return !valTwo || (valTwo.length < 8);
}
}
},
fieldTwo: {
require_from_group: [1, '.datagroup'],
minlength: {
param: 8,
depends: function(element) {
var valOne = $('#fieldOne').val();
return !valOne || (valOne.length > 2);
}
}
}
},
submitHandler: function (form) {
alert("process");
return false;
},
invalidHandler: function (event, validator) {
if ($('#fieldOne').val() || $('#fieldTwo').val()) {
alert('processfailed');
} else {
alert('empty');
}
return false;
}
});
我删除了groups
属性,因为它会导致所有消息显示在第一个字段的旁边,当消息违反minlength
规则时,这似乎不正确。
注意:invalidHandler
函数的第一个参数是事件对象,而不是表单元素,但是可以使用event.target
获取表单元素。
https://stackoverflow.com/questions/30688769
复制