Javascript 检测禁用字段上的更改

Javascript 检测禁用字段上的更改,javascript,internet-explorer,Javascript,Internet Explorer,字段处于禁用状态时,似乎忽略了propertychange事件。有没有一种方法可以在值更改时运行代码 <input id="country" onpropertychange="alert(country.value)" disabled="disabled"/> <input type="button" onclick="country.value='USA'" value="Go" /> 您能不能在country.value='USA'之后的按钮onclick属性中

字段处于禁用状态时,似乎忽略了propertychange事件。有没有一种方法可以在值更改时运行代码

<input id="country" onpropertychange="alert(country.value)" disabled="disabled"/>
<input type="button" onclick="country.value='USA'" value="Go" />

您能不能在
country.value='USA'
之后的按钮onclick属性中添加事件?例如:

<input id="country" disabled="disabled" />
<input type="button" onclick="country.value='USA'; alert(country.value)" value="Go" />

是的,有!简而言之,当设置了disabled时,您需要自己触发propertychange事件,要做到这一点,您需要更改要启用/禁用的元素上的getter和setter

以下是关于此技术的几篇好文章:

不幸的是,您不能仅在setter中的禁用事件上使用本机fireEvent,因为它遵循禁用状态。因此,我们需要一个外部事件触发系统。幸运的是,jQuery的好人已经做到了这一点

因此,有了这些知识,我编写了一个jQuery插件。要使用它,只需将其应用于选择器,例如:

$('#disabled_thing').fireOnDisable();

如果您所在的浏览器本机不支持propertychange事件,则此插件将不起任何作用。这是专为IE8-10设计的。对于非IE浏览器(和IE-11)使用。对于IE7或更低版本,您就完蛋了,因为它们不公开setter/getter函数。

通常是的,但在我的情况下不是。单击处理程序是我无法接触的第三方代码。我可以添加第二个点击手,但不能保证哪一个会被第一个调用。是否有在单击后触发的事件?““也许?