2012-12-14 72 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/