2009-02-02 73 views
0

我有一個有很多SELECT的表單。由於各種原因,我只想傳遞給用戶選擇的表單。換句話說,每一個選擇是這樣的:如何通過某些表單值

<SELECT name=field001> 
    <option value=-1>Please pick a value</option> 
    <option value=1>1</option> 
    <option value=2>2</option> 
    <option value=3>3</option> 
</SELECT> 

通常情況下,只有一個或兩個將在同一時間選擇,我想在選擇的只能傳遞到窗體。我在猜測我需要在JavaScript中取消-1的輸入,但我不知道該怎麼做,也想知道是否有標準方法來處理這種事情。

回答

5

當您發佈表單時,它會將每個控件的值發送到服務器。如果您需要防止這種情況,我認爲您最好的選擇是覆蓋onSubmit操作並重定向到同一頁面的新實例,只在查詢字符串中放置所需的信息。

請記住,這會增加您的代碼複雜性很多,並會使其難以維護。我的意見是,你只是不會獲得足夠的表現,這會讓你的努力值得,但這取決於你。

+0

+1的缺點和替代 – 2009-02-02 15:42:43

1

這並不常見。

如果你真的需要它,那麼你可以做什麼@Sergio建議,或者實際上刪除你想要跳過dom的項目,或者在提交時將它們標記爲禁用(雖然有些瀏覽器我做了不同的事情與disabled控件 - 你必須檢查)。

這真的不常見。如果你有太多的選擇,發送它們導致問題,你有太多的選擇。

處理此問題的常規方法是使用您的魔法值「-1」來知道何時忽略服務器端的某些值。

1

我總是會檢查每個元素,而不管數量,但特別是因爲數量。你還能確定用戶沒有改變別的東西嗎?你說:

通常情況下,只有一個或兩個會在同一時間

所以就在那裏,你甚至還沒有100%的把握,誒選擇?經驗教會我永遠不要相信你通常會「希望」發生的事情,因爲它通常會是意想不到的事情!

1

假設你只有一種形式這個腳本添加到您的網頁:

document.forms[0].onsubmit = function(){ 
    var selects = this.getElementsByTagName('select'); 
    for (var i = selects.length - 1; i>=0; i--) { 
     if (selects.item(i).value == -1) { 
      selects.item(i).parentNode.removeChild(selects.item(i)); 
     } 
    } 
    return true; 
} 
相關問題