这是我的代码,如下所示。我能够测试是否输入了两个字段中的任何一个。我现在想要的是限制用户只输入1个字段而不是两个字段,如何让用户输入至少3个字符?我尝试添加规则,但它不起作用。我能将if / else语句置于规则之下吗?谢谢。急需帮助。
reg: function() {
reg_validator = $('.form_validation_reg').validate({
onkeyup: false,
errorClass: 'error',
validClass: 'valid',
highlight: function(element) {
$(element).closest('div').addClass("f_error");
},
unhighlight: function(element) {
$(element).closest('div').removeClass("f_error");
},
errorPlacement: function(error, element) {
$(element).closest('div').append(error);
},
rules: {
campaign_name: {
require_from_group: [1, '.span8']
},
campaign_name2: {
require_from_group: [1, '.span8']
}
},
invalidHandler: function(form, validator) {
$.sticky("There are some errors. Please correct them and submit again.", {autoclose : 5000, position: "top-right", type: "st-error" });
}
})
}
答案 0 :(得分:2)
由于jQuery Validation插件用于验证输入的数据,并且验证不会阻止用户将数据输入空字段,因此您可以启用/禁用模糊的相反字段。假设span8
类仅用于这两个字段。
$('.span8').on('blur', function () {
if ($(this).val() != '') {
$('.span8').not(this).prop('disabled', 'disabled');
} else {
$('.span8').not(this).removeProp('disabled');
}
});
引用OP :
“如何让用户输入至少3个字符?”
使用minlength
规则...
rules: {
campaign_name: {
require_from_group: [1, '.span8'],
minlength: 3
},
campaign_name2: {
require_from_group: [1, '.span8'],
minlength: 3
}
}
工作演示:http://jsfiddle.net/htd23/
如果你不想禁用模糊字段而只是想使用验证,这里有一个你可以使用的自定义验证方法......
jQuery.validator.addMethod('notBoth', function (value, element, param) {
return ((value != '') && ($(param[0]).val() == '') || (value == '') && ($(param[0]).val() != ''));
}, "Please do not fill out both fields");
声明自定义方法......
rules: {
campaign_name: {
require_from_group: [1, '.span8'],
minlength: 3,
notBoth: ['input[name="campaign_name2"]'] // parameter is the other field
},
campaign_name2: {
require_from_group: [1, '.span8'],
minlength: 3,
notBoth: ['input[name="campaign_name"]'] // parameter is the other field
}
}
替代演示:http://jsfiddle.net/EqF5F/
备注强>:
onkeyup: false
时,在模糊或提交之前,您不会看到minlength
规则有效。 validClass
和errorClass
设置为默认值时,无需声明。