禁用后,下拉列表的onchange()事件丢失

时间:2019-12-05 14:49:34

标签: javascript html onchange

我有一个正在工作的ASP.NET MVC项目。浏览器:Internet Explorer(忘记什么版本),但是我的工作机器是32位Windows7。

在其中一个视图页面中,我有一个下拉列表。如果有任何更改,它将使用特定值填充文本框。以下是代码(转换为HTML):请注意,下拉列表的格式为表单

<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。)

但是,一旦按下“提交”按钮,select将禁用属性并提交表单。表单/页面返回后,我发现下拉列表中缺少onchange()函数。为什么?我使用document.getElementById('searchType).hasAttribute('onchange'),并且返回false(当我在Internet Explorer开发人员工具的“控制台”选项卡中时)。

为什么disabled属性会删除下拉列表的onchange()事件?这是设计缺陷吗?我的意思是,如果我在页面上有很多控件,如果我禁用了这些控件,但后来又以某种方式启用了它们(例如,用户查看所输入的内容,但发现需要重新输入一些字段),那么我必须重新将每个事件与自己的事件相关联,似乎效率很低。

[Edit]强调下拉列表位于表单内部,每个按钮将导致提交表单[/ Edit]

2 个答案:

答案 0 :(得分:0)

jQuery中没有$('input', 'select')
而是使用

$("input, select")

答案 1 :(得分:0)

尝试使用struct matrix { int rows; int cols; int **cells; }; 看看是否有效。

或者以其他方式this page可能会有所帮助。根据答案,分配属性使用$('input, select').prop('disabled', false)并通过$("input").attr('disabled','disabled')

删除