jQuery使用两个选择验证addMethod

时间:2012-12-14 13:04:30

标签: jquery validation

我想为jQuery validate插件编写一个新的验证方法。我有两个选择框,当我们选择yes的值时,我想抛出错误?

我尝试了几种不同的方法,但我无法得到任何工作。

以下是我的尝试:

$.validator.addMethod('noDuplicate0', function(value, element, params) {     
      value = $.makeArray($(element).val()) || [];
      var other = $.makeArray($(input[name=nightFreeRoomOnly]).val()) || []; 
      return $.inArray('0', value) == -1 || $.inArray('0', other) == -1; },'Both options can not be set to yes');
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您必须添加自己的自定义规则。

添加notEqual方法

$.validator.addMethod("notEqual", function(value, element, params) { 
 return (value != $(param).find('option:selected').val() || value!='yes');
}, jQuery.format("Values A and B Cannot be equal"));

然后从验证中运行此自定义方法

$("#myform").validate({
  rules: {
   A: "required",
   B: {
      notEqual: "#A"
   }
 }
});

其中A和B是您的2个选择字段ID

答案 1 :(得分:0)

你走在正确的轨道上......使用addMethod。如果您的表单如下所示:

<form id="myform">
<select name="select1" id="select1">
    <option selected="selected">yes</option>
    <option>no</option>
</select>
<select name="select2" id="select2">
    <option selected="selected">yes</option>
    <option>no</option>
</select>    
<br><input type="submit">
</form>​

你可以制作一个这样的验证脚本:

$.validator.addMethod('notbothyes', function(val, el, param) {
    return (val != 'yes' || ('yes' != $(param).find('option:selected').val()));
}, 'These fields cannot both be yes');

$("#myform").validate({
    rules: {
        select1: {
            notbothyes: '#select2'
        },
        select2: {
            notbothyes: '#select1'
        }
    }
});

在此处查看此行动:http://jsfiddle.net/ryleyb/FtUPq/1/