2017-01-18 56 views
0

我有一個數據庫,我可以從中爲用戶選擇生成選項。基於這個選擇,我將這些值提交到同一頁面,並使用javascript獲取選擇內容。試圖從使用javascript自我提交表單中獲取值

在同樣的形式中,我有一個單選按鈕和一個多選菜單。

的HTML是這樣產生的:

單選按鈕和多個選項選擇代碼:

htmlstr+="<select multiple>"; 
for (i=0; i<g.length;i++) { 
     htmlstr+="<option name='ges[]' value='" + g[i] + "'>" + g[i] + "</option>"; 
} 
htmlstr+="</select><br>"; 
for (i=0; i<st.length;i++) { 
    htmlstr+="<input type='radio' name='sts' value='" + st[i] + "'>" + st[i] + "<br>"; 
} 

這些都置於一種形式,它於是具有提交按鈕內。 點擊提交按鈕後,我想知道選擇的值。我明白多重選擇將是一個數組,但我如何獲得值的數組,我甚至無法獲得所選單選按鈕的值。我已經嘗試使用附加到名稱的.value屬性獲取該值,但這不起作用。

+0

看起來你正在尋找服務器端代碼,是否正確?你使用的是什麼框架(C#,MVC,PHP等)。你發佈的網址是什麼? –

+0

這就是爲什麼我有麻煩..即時通訊不尋找服務器端代碼(我可以使用PHP,如果服務器端),我想獲得選定的變量在同一頁上,所以在按鈕上點擊基本上 – user2883071

+0

好了。我只是給你添加了一個可能的答案。 –

回答

1

沒有一個真正簡單的方法來做到這一點。你必須檢查每個選項。

有一個HTMLSelectElement.selectedOptions接口被記錄。但它沒有太多用處,我不確定瀏覽器的支持。另外,它僅適用於選擇控制,而不適用於無線電控制。你可以看看這裏雖然:https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement

但對於一個更可靠的方法,試試這個...

對於選擇控制,通過selectControl.options陣列迭代,並檢查每個項目的selected屬性。如果selected屬性爲true,則將該值添加到您自己的數組中。

僞代碼:

for (var i in select.options) { 
    if (select.options[i] && select.options[i].selected) { 
     selectedOptions.push(select.options[i].value); 
    } 
    } 

對於單選按鈕,通過對象在DOM(getElementsByName)陣列迭代,並檢查checked屬性。這是真的,將這個值添加到你的數組中。

僞代碼:

for (var i in radios) { 
    if (radios[i] && radios[i].checked) { 
     selectedOptions.push(radios[i].value); 
    } 
    } 

下面是使用你的代碼的完整工作示例:

的jsfiddle:https://jsfiddle.net/mspinks/u890j86j/3/

+0

工作完美..不知道'.getElementsByName'。謝謝。 – user2883071

+0

太棒了。很高興它適合你。 –