禁用的元素不会触发鼠标事件。大多数浏览器会将源自禁用元素的事件传播到 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();
});
示例:http://jsfiddle.net/RXqAm/170/(更新为使用 jQuery 1.7 而不是 )。prop
attr