<select class="distinctrank" name="rank[]" required>
<option value="">Select</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<select class="distinctrank" name="rank[]" required>
<option value="">Select</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<select class="distinctrank" name="rank[]" required>
<option value="">Select</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
我試圖防止用戶選擇相同的選項兩次如何在提交表單之前確保所選選項不同?
EX:
- 值1 - >乙
- 值2 - 「ç
- 值3 - > A
但不允許
因爲我有8 answer :值1 - >乙
值2 - - >乙
值3>
我不能使用此<select>
與8 <option>
,並允許用戶更改他/她的選項。
不幸的是,我不能使用單個選擇設置爲「多個」。 我發現這個答案就在剛纔,但因爲我不jQuery的或Javascript好,我不能讓它沒有選擇標籤的工作表中: Here is the answer
UPDATE: 我發現了一個更好的辦法去做,但我有一些問題。 我試圖修改此代碼:with input tags以使其與選定標籤一起使用。我現在面臨的問題是,每次您選擇相同的選項兩次,錯誤「請輸入一個唯一值」顯示(我想看到它,當用戶選擇相同的值兩次或更多)當您更改值「請輸入唯一值」確實會消失。但是,它保留了「此字段需要」後面的警告(當點擊一個新的選擇標籤時)。因此,「該字段是必需的」「不會消失,直到用戶爲所有選擇標籤選擇一個選項。 這裏是jQuery代碼:
jQuery.e
jQuery.validator.addMethod("notEqualToGroup", function(value, element, options) {
// get all the elements passed here with the same class
var elems = $(element).parents('form').find(options[0]);
// 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++;
}
});
// count should be either 0 or 1 max
if (this.optional(element) || matchesFound <= 1) {
//elems.removeClass('error');
return true;
} else {
//elems.addClass('error');
}
}, jQuery.validator.format("Please enter a Unique Value."))
// validate form
$("#signupform").validate({
rules: {
'rank[]': {
required: true,
notEqualToGroup: ['.distinctrank']
},
},
});
你**不能**有三個具有相同'name'的'select'元素。如果是這種情況,jQuery Validate插件將**不**工作。 – Sparky
那麼,如果我有一個選擇標籤的數組,我會用8個標籤或更多的標籤發生什麼。我如何跟蹤它? –
我只是告訴你,如果你在多個元素上使用相同的'name',這個插件將無法正常工作。 – Sparky