我有一個<form>
多對<select>'s
都使用相同的<option>'s
集,但我想確保用戶不會選擇任何對的同一組選項。任何給定對中選擇的組合值不應該用於其他地方。對可以動態添加或刪除,如果任何2對相同,他們就不能提交表單。 A1 & B1是一對,A2 & B2是一對,依此類推。至於何時檢查,我認爲提交將是最好的。檢測和/或防止重複的選擇值
我採取這種方法之前,我意識到這是做這件事的可怕的方式...
var selects = [];
$('#col1 select').each(function(){
var index = $(this).parent().attr('id').substring(1);
var value1 = this.value;
var value2 = $('#b' + index + ' select').val();
var entry = value1+value2;
selects.push(entry);
});
// loop through selects looking for duplicates
這裏是有問題的HTML ...
* {
box-sizing: border-box; }
#column1,
#column2 {
display: inline-block;
vertical-align:top;
width: 49%;}
#column1 div,
#column2 div {
display:block;
width:100%;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid black;}
<div id="column1">
<div id="a1">
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div id="a2">
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div id="a3">
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
</div>
<div id="column2">
<div id="b1">
<select>
<option value="alpha">alpha</option>
<option value="bravo">bravo</option>
<option value="charlie">charlie</option>
</select>
</div>
<div id="b2">
<select>
<option value="alpha">alpha</option>
<option value="bravo">bravo</option>
<option value="charlie">charlie</option>
</select>
</div>
<div id="b3">
<select>
<option value="alpha">alpha</option>
<option value="bravo">bravo</option>
<option value="charlie">charlie</option>
</select>
</div>
</div>
爲什麼不使用單選按鈕和他們的風格作爲一個列表?更好的解決方案,如果Javascript和CSS被禁用(不太可能,但它可能)。 –
就這樣我很清楚;如果選擇'a1 - > value1',則不能選擇'a2 - > value1',只有'a2 - > value2'是可選的。類似的b。那是對的嗎? – Sasang
@Waxi請使用[Stack Snippets](https://stackoverflow.blog/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/)代替jsfiddle。 – Barmar