我有一個場景,當我有3個下拉菜單並需要對它們實施兩個驗證但是作爲一個組。當最後一個元素有效時,jQuery驗證邏輯失敗
1)3中的2個下拉框應該具有「否」以外的值。這與所需的驗證類似。不檢查空白將檢查「否」。
2)沒有2個下拉列表可以具有相同的值。
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var numberRequired = options[0];
var selector = options[1];
var fields = $(selector, element.form);
var filled_fields = fields.filter(function() {
// it's more clear to compare with empty string
return $(this).val() != "No";
});
var empty_fields = fields.not(filled_fields);
// we will mark only first empty field as invalid
if (filled_fields.length < numberRequired){ //&& empty_fields[0] == element) {
return false;
}
return true;
// {0} below is the 0th item in the options field
}, jQuery.format("Please fill out at least {0} of these fields."));
jQuery.validator.addMethod("notEqualToGroup", function(value, element, options) {
var numberRequired = options[0];
var selector = options[1];
// get all the elements passed here with the same class
var elems = $(element).parents('form').find(selector).not(element);
// the value of the current element
var valueToCompare = value;
// count
var matchesFound = 0;
// loop each element and compare its value with the current value
// and increase the count every time we find one
jQuery.each(elems, function(){
thisVal = $(this).val();
if(thisVal == valueToCompare){
matchesFound++;
}
});
if (matchesFound >= numberRequired){ //&& elems[0] != element) {
return false;
}
return true;
}, jQuery.format("No two fields can have same value."));
其中一個場景中的失敗,即當選擇1和選擇2都不是「否」,但仍然有不顯示味精相同的值。
有人可以請建議缺少什麼。謝謝
你爲什麼要使用一個7歲的版本jQuery驗證的?從那時起,許多bug在'require_from_group'中被修復。請升級到版本1.15.0並相應地重構您的代碼。 – Sparky