【问题标题】:onchange() event of dropdownlist missing after disabled禁用后下拉列表的 onchange() 事件丢失
【发布时间】: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]

【问题讨论】:

标签: javascript html onchange


【解决方案1】:

尝试使用$('input, select').prop('disabled', false) 看看是否有效。

或者以其他方式this page 可能会有所帮助。根据答案分配属性使用$("input").attr('disabled','disabled') 并由$("input").removeAttr('disabled'); 删除

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多