0

我想为 jQuery 验证插件编写一个新的验证方法。我有两个选择框,当两个选择框的值都为 selected 时,我想抛出错误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');
}

任何想法?

4

2 回答 2

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

于 2012-12-14T13:23:32.757 回答
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/

于 2012-12-14T18:50:04.323 回答