一尘不染

JavaScript输入禁用事件

javascript

显然一个被禁用的没有被任何事件处理

有没有解决此问题的方法?

<input type="text" disabled="disabled" name="test" value="test" />



$(':input').click(function () {
    $(this).removeAttr('disabled');
})

在这里,我需要单击输入以启用它。但是,如果我不激活它,则不应发布输入。


阅读 380

收藏
2020-04-25

共1个答案

一尘不染

禁用的元素不会触发鼠标事件。大多数浏览器会将事件从禁用元素传播到DOM树,因此事件处理程序可以放在容器元素上。但是,Firefox不会表现出这种行为,当您单击禁用的元素时,它根本不执行任何操作。

我想不到更好的解决方案,但是,为了完全兼容跨浏览器,您可以在禁用的输入之前放置一个元素,然后单击该元素。这是我的意思的示例:

<div style="display:inline-block; position:relative;">
  <input type="text" disabled />
  <div style="position:absolute; left:0; right:0; top:0; bottom:0;"></div>
</div>​

jq:

$("div > div").click(function (evt) {
    $(this).hide().prev("input[disabled]").prop("disabled", false).focus();
});​
2020-04-25