2012-12-14 56 views
0

我想为jQuery验证插件编写一个新的验证方法。我有两个选择框,当两个选择的值都是yes时,我想抛出错误并输入错误。jQuery验证addMethod与两个选择

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

这是我曾尝试:

$.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'); 
} 

任何想法?

+5

后你都试过了。 – ryadavilli

+0

你应该看到equalTo validator是如何实现的,需要做相反的操作 – svillamayor

+0

如果你试图做一些互斥的选择,为什么不使用'radio'控件? –

回答

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个IDS

+0

我不认为这涵盖了这个问题--OP试图只验证失败,如果两者都是'是'不是如果他们是一样的(即两个'不'应该是OK) – Ryley

+0

嘿我编辑答案,现在应该工作 – cjds

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/