2015-11-30 50 views
1

我有幾個下拉列表(類名稱爲month_dropdown),下拉數量不是常量。我怎樣才能爲他們實現NotEqual驗證。我正在使用jQuery驗證插件。jQuery驗證 - 對同一類的NotEqual驗證

這是我寫 -

jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value != $(param).val(); }, "Please specify a different value");

jQuery.validator.addClassRules("month_dropdown",{ 
    notEqual: ".month_dropdown" 
}); 

然而,這並不是完美的工作,即使我選擇不同的月份它彈出我的信息「請指定一個不同的價值。」

+0

您可能要添加的所有HTML小提琴例子/ JS代碼 – bish

回答

1

您需要迭代每個輸入元素,然後檢查其值。

在你的情況,你總是檢查第一選擇元素的值對本身因爲$(param).val()總是返回選擇param匹配第一個輸入元素的值,所以當測試針對第一輸入,則其價值將運行鍼對其自身的比賽

jQuery.validator.addMethod("notEqual", function(value, element, param) { 
 
    return this.optional(element) || $(param).not(element).get().every(function(item) { 
 
    return $(item).val() != value; 
 
    }); 
 
}, "Please specify a different value"); 
 

 
jQuery.validator.addClassRules("month_dropdown", { 
 
    notEqual: ".month_dropdown" 
 
}); 
 

 
jQuery(function($) { 
 
    var validator = $('#myform').validate({ 
 
    rules: {}, 
 
    messages: {} 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script> 
 
<form id="myform" method="post" action=""> 
 
    <select class="month_dropdown" name="el[1]"> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    </select> 
 
    <select class="month_dropdown" name="el[2]"> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    </select> 
 
    <select class="month_dropdown" name="el[3]"> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    </select> 
 
    <input type="submit" value="Save" /> 
 
</form>

+0

http://jsfiddle.net/arunpjohny/qhsezamn/ –

+0

作品!非常感謝Arun! – Zero4