我在下面有这个代码。选择后,所有内容都将被禁用。
<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>
但是当我点击提交时,“下拉列表”的值没有被传递。我在这里错过了什么吗?
答案 0 :(得分:1)
禁用表单控件未提交。这是正常行为。
一种解决方法是将所选值复制到 提交的隐藏输入。
(我真的不建议禁用选择更改 - 如果用户不小心点击了错误的内容怎么办?如果他们试图用键盘选择怎么办?)
(另外,在内联事件属性中,您不需要javascript:
。)
name
属性):
<input type="hidden" name="dropdown" id="dropdown">
然后您的onchange
属性就像:
<select onchange="document.getElementById('dropdown').value=this.value; this.disabled=true;">
答案 1 :(得分:0)
您下拉列表中所选选项的值不会被传递,因为您已禁用下拉列表。也许这就是原因。尽量不要禁用它。
答案 2 :(得分:0)
默认情况下,禁用选择似乎不会提交。
您可以添加另一个隐藏的选择元素。并使用脚本来选择提交。
答案 3 :(得分:0)
禁用控件然后提交其值是没有意义的。如果您想要提交的值,请不要禁用它。
无论如何,一个选项是在提交之前启用控件:
<form ... onsubmit="this.dropdown.disabled = false;">
现在您不必将值复制到任何位置,无论控件是否被禁用,都将提交值。