2010-10-03 67 views
0

似乎propertychange事件在字段處於禁用狀態時被忽略。有沒有辦法在值更改時運行代碼?檢測禁用字段上的更改

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

回答

0

你能不只是按鈕的onclick屬性裏面添加在你的事件後country.value='USA'?例如:

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

通常是的,但在我的情況沒有。點擊處理程序是我無法觸及的第三方代碼。我可以添加第二個點擊手柄,但不能保證哪一個會先被調用。點擊後是否有事件發生?也許點擊'點擊'? – 2010-10-03 11:17:17

0

是的,有!簡而言之,當設置禁用時,您需要自己觸發propertychange事件,爲此,您需要更改要啓用/禁用的元素的getter和setter。

這裏有幾個關於這項技術的好文章:

不幸的是,你不能只是使用本地fireEvent上被禁用的事件二傳手內,因爲它服從於殘疾人狀態。因此我們需要一個外部事件觸發系統。幸運的是,jQuery中的好人已經做到了!

因此,有了這些知識,我寫了一個fireOnDisable jQuery插件。要使用它,只需將其應用到選擇例如:

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

如果你在沒有原生支持的PropertyChange事件還是一個瀏覽器,這個插件會做什麼。它專門用於IE8-10。對於非IE瀏覽器(和IE-11),請使用MutationObservers。對於IE7或更低版​​本的用戶,由於他們不公開setter/getter函數,因此你被搞砸了。