当字段处于禁用状态时,似乎忽略了属性更改事件。有没有办法在值改变时运行代码?
<input id="country" onpropertychange="alert(country.value)" disabled="disabled"/>
<input type="button" onclick="country.value='USA'" value="Go" />
答案 0 :(得分:0)
你能不能在country.value='USA'
之后在按钮的onclick属性中添加你的事件?例如:
<input id="country" disabled="disabled" />
<input type="button" onclick="country.value='USA'; alert(country.value)" value="Go" />
答案 1 :(得分:0)
是的!简而言之,您需要在设置禁用时自行触发propertychange事件,为此,您需要更改要启用/禁用的元素上的getter和setter。
以下是一些关于此技术的好文章:
不幸的是,您不能仅在setter中的已禁用事件上使用本机fireEvent,因为它遵循禁用状态。因此我们需要一个外部事件触发系统。幸运的是,jQuery的优秀人员已经做到了!
所以,凭借这些知识,我编写了一个fireOnDisable jQuery插件。要使用它,只需将其应用于选择器,例如:
$('#disabled_thing').fireOnDisable();
如果您使用的浏览器本身不支持propertychange事件,则此插件将不执行任何操作。它专门用于IE8-10。对于非IE浏览器(和IE-11),请使用MutationObservers。对于IE7或更低版本,你被搞砸了,因为它们没有公开setter / getter函数。