【发布时间】:2019-12-05 14:49:34
【问题描述】:
我有一个 ASP.NET MVC 项目在工作。浏览器:Internet Explorer(忘记什么版本了),但我的工作机器是 32bit Windows 7。
在其中一个视图页面中,我有一个下拉列表。如果有任何更改,它将填充具有特定值的文本框。这是代码(翻译成 HTML): 请注意下拉列表是 form
<form>
<select id="searchType" name="searchType" onchange="FillMyTextBox()">
<option value="1" selected>A</option>
<option value="2">B</option>
...
</select>
</form>
在页面顶部,我有一个名为“提交”的按钮。单击此按钮后,将禁用所有字段并提交表单。 $('input, select').attr('disabled', 'true')“提交”按钮将消失,并出现另一个按钮“返回”。如果单击此“返回”按钮,将设置所有字段可编辑并提交表单。 $('input, select').removeAttr('disabled')(我猜你知道,这两段代码使用了jQuery。)
但是,一旦按下“提交”按钮,选择就会禁用属性并提交表单。一旦表单/页面返回,我发现下拉列表中缺少 onchange() 函数。为什么?我使用document.getElementById('searchType).hasAttribute('onchange'),它返回 false(当我在 Internet Explorer 开发人员工具的控制台选项卡中时)。
为什么disabled 属性会删除下拉列表的onchange() 事件?这是设计缺陷吗?我的意思是,如果我在页面上有很多控件,如果我禁用了这些控件,但后来以某种方式重新启用它们(比如用户查看输入的内容,但发现需要重新输入某些字段),那么我必须重新 -将每个与自己的事件关联起来,似乎效率很低。
[Edit]强调下拉列表在表单内部,每个按钮都会导致表单被提交[/Edit]
【问题讨论】:
-
我已经创建了这支笔,但我无法重现该问题。你能检查一下它是否和你的页面相似吗?codepen.io/cakirilker/pen/QWwbQwM?editors=1111
-
我建议您将代码放在 sn-p 上
标签: javascript html onchange