2013-04-26 64 views
1

我在下面有下面的代碼。選擇後,所有內容都將被禁用。如何從選擇後的下拉菜單中選定的值被選中之後被禁用

<select id="dropdown" name="dropdown" onchange="javascript:this.disabled = 'disabled';"> 
<option value="dropdown">Pls select one 
<option value="apple">Apple 
<option value="oragne">Orange 
<option value="grapes">Grapes 
</select> 

但是當我點擊提交時,「下拉」的值沒有被傳遞。我在這裏錯過了什麼嗎?

回答

1

禁用窗體控件不會被提交。這是正常的行爲。

解決辦法之一是將所選值複製到提交的隱藏輸入。

(我真的不建議禁用於變化的選擇,但 - ?如果什麼用戶不小心點擊了錯誤的事情是什麼,如果他們想用鍵盤選擇)

(以及其他不談,你不需要javascript:在線事件屬性。)

編輯:如何實現隱藏的輸入?好吧,給隱藏輸入你的服務器端代碼期望的名稱(從選擇元素去掉name屬性):

<input type="hidden" name="dropdown" id="dropdown"> 

然後你onchange屬性是這樣的:

<select onchange="document.getElementById('dropdown').value=this.value; this.disabled=true;"> 
+0

那麼如何將選定的值傳遞給隱藏的輸入?謝謝! :) – francoom 2013-04-26 00:29:39

+0

好的,我已經爲我的答案添加了一個示例。 – nnnnnn 2013-04-26 00:38:16

+0

它的工作!謝謝! :) – francoom 2013-04-26 00:51:37

0

從下拉列表中選擇的選項的值將不會被傳遞,因爲您的下拉列表已禁用。也許這就是爲什麼。儘量不要禁用它。

0

它似乎禁用選擇默認情況下不提交。

您可以添加另一個隱藏的選擇元素。並使用腳本來選擇提交。

0

禁用控件並沒有意義,然後提交它的值。如果你想要提交的值,不要禁用它。

總之,一種選擇是提交之前,使控制:

<form ... onsubmit="this.dropdown.disabled = false;"> 

現在,你不必在任何地方複製的價值和值將提交的控制是否禁用。