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>

但是当我点击提交时,“下拉”的值没有被传递。我在这里错过了什么吗?

4

4 回答 4

1

禁用的表单控件不会被提交。这是正常行为。

一种解决方法是将所选值复制到被提交的隐藏输入。

(虽然我真的不建议禁用更改时选择 - 如果用户不小心点击了错误的东西怎么办?如果他们试图用键盘选择怎么办?)

(另外,您不需要javascript:inline 事件属性。)

编辑:如何实现隐藏输入?好吧,给隐藏的输入提供服务器端代码期望的名称(并name从 select 元素中删除属性):

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

然后您的onchange属性将类似于:

<select onchange="document.getElementById('dropdown').value=this.value; this.disabled=true;">
于 2013-04-26T00:26:24.927 回答
0

您从下拉列表中选择的选项的值不会被传递,因为您禁用了下拉列表。也许这就是原因。尝试不禁用它。

于 2013-04-26T00:25:00.393 回答
0

似乎禁用的选择默认不提交。

您可以添加另一个隐藏的选择元素。并使用脚本来选择提交。

于 2013-04-26T00:31:31.133 回答
0

禁用控件然后提交其值实际上没有任何意义。如果您想要提交的值,请不要禁用它。

无论如何,一种选择是在提交之前启用控件:

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

现在您不必在任何地方复制该值,无论控件是否禁用,该值都将被提交。

于 2013-04-26T01:39:06.083 回答