2010-12-16 118 views
0

我有一個功能正在改變輸入隱藏標籤的值。我已經註冊了一個監聽這個輸入的監聽器(「更改」事件)。但是由於輸入的值正在以編程方式改變(而不是由用戶干預),所以處理程序從不執行。但是我希望處理器在輸入值改變時執行。是否有任何解決方法來實現這一目標?事件問題

+0

Hm..what? – sje397 2010-12-16 10:24:04

回答

0

element.onchange();

+0

正如我所指出的,onchange()不起作用。只有當我在輸入標籤上刪除type =「hidden」,並且手動在輸入字段上輸入一些值時,處理程序纔會被調用。否則,如果我以編程方式更改值,處理程序永遠不會被調用。 – 2010-12-16 09:51:00

+0

對不起,如果我的帖子不清楚。我的意思是你應該手動調用處理程序,執行'theElement.onchange();'。但是,您可能必須首先更改'this'上下文('this = theElement;')。 – 2010-12-16 13:04:51

0

你可以簡單地做調用JavaScript中的更改事件:

document.getElementById('id').onchange()

如果你使用jQuery,這是$(element).change()

1

你在找什麼,是一個Mutation Event。雖然在瀏覽器中對它的支持嚴重不足,但我現在甚至找不到支持列表。如果您僅使用jQuery ,則可以嘗試一些插件,例如this one,但是,如果您調用$ .attr函數,它只會起作用。

另一種選擇是在jQuery中使用custom events,但這比修改該值時直接調用處理程序容易一點。

希望這會有所幫助。

0

沒有一致的,跨瀏覽器的方式來監視屬性更改。 maksymko是正確的,你正在尋找的是突變事件,但正如他所說,他們沒有得到廣泛的支持。

您最接近的保證是設置您的代碼使用的API /方法,以便對輸入值進行任何更改。這是不完整的和未來脆弱的,但這是你所擁有的。

許多圖書館已經制定了這一下直接調用您的處理程序,當你修改這個值的一些管道,如jQuery或YUI 3