2012-04-09 51 views
1

找不到任何我想找的東西,但是如果我錯過了某些明顯的東西,我很抱歉。我基本上試圖讓JavaScript函數在提交表單之前檢查每個選擇框的唯一值,然後將其輸入到數據庫中。JavaScript - 檢查選擇框中的唯一值

有可能是任何數量的選擇框,但都遵循的形式相似的命名格式:

operator_address_type_0 
operator_address_type_1 
operator_address_type_2 
etc. 

我正不知道怎麼的JavaScript函數可以通過所有的選擇中被設置爲循環並提醒用戶,如果發現有相同的值,則停止提交。

感謝您的任何幫助。

編輯:

這是我目前的選擇框一些簡單的HTML。我不得不簡化它,因爲它們所在的表都是通過AJAX從查詢數據庫加載的。

<select name="operator_address_type_0"> 
<option value="Main">Main</option> 
<option value="Payment">Payment</option> 
<option value="Poster">Poster</option> 
</select> 

<select name="operator_address_type_1"> 
<option value="Main">Main</option> 
<option value="Payment">Payment</option> 
<option value="Poster">Poster</option> 
</select> 

它是這樣的,但有可能在未來更多的選擇,我只是想確認,只有一個主要的地址,一個付款地址,一個地址海報等

+0

你可以顯示一個html代碼嗎? – szajmon 2012-04-09 15:44:58

+0

我已經更新了我的帖子,希望它能讓你對你更清楚 – 2012-04-09 15:50:46

+0

這些值應該在每個選擇框中分別獨立還是全局唯一? – szajmon 2012-04-09 15:52:13

回答

3

有點像以下?

function checkDuplicates() { 
    var selects = document.getElementsByTagName("select"), 
     i, 
     current, 
     selected = {}; 
    for(i = 0; i < selects.length; i++){ 
    current = selects[i].selectedIndex; 
    if (selected[current]) { 
     alert("Each address type may not be selected more than once."); 
     return false; 
    } else 
     selected[current] = true; 
    } 
    return true; 
} 

演示:http://jsfiddle.net/GKTYE/

此遍歷選擇並記錄每個所選擇的索引,如果一個重複的被發現停止。這假設所有的選擇具有相同順序的相同選項。要測試實際選定的值:

current = selects[i].options[selects[i].selectedIndex].value; 
+0

這似乎總是提醒用戶,即使值不同 – 2012-04-09 16:19:32

+0

適合我這裏:http://jsfiddle.net/GKTYE/ – nnnnnn 2012-04-09 16:31:13

+0

嗯,這是否有關,如果選擇是在一個表內?我不會想到會這樣嗎? – 2012-04-09 16:40:15