2013-05-11 54 views
0

其他JavaScript正在更改輸入的值,我在想是否有辦法檢測更改。檢測輸入是否已動態更改

此問題與Keyup或Change無關。這不是由用戶輸入,而是由其他JavaScript通過用戶的各種操作來更改它。

+2

使用的setInterval調用你總是可以查詢它。不優雅,但。 – j08691 2013-05-11 20:09:25

+0

你已經一個代碼示例? – 2013-05-11 20:10:04

+1

你有過其他的JavaScript控件?如果是這樣,你可以當你改變觸發某種事件it – lbstr 2013-05-11 20:10:23

回答

1

當編程改變一個事件,可以觸發一個更改事件,使附加到被解僱的元素肯定事件處理jQuery有一個trigger()方法來做到這一點。

$('#elementID').on('change', function() { 
    alert(this.value); 
}); 


$('#elementID').val('some new value').trigger('change'); 
+0

.change也可以。 IE瀏覽器。 $(元件).change(); – Iscariot 2013-05-12 13:05:50

-1

我要說的是,除了修改第三方腳本輸出內容或使用setInterval(代價高昂)之外,沒有其他辦法。

這個問題的底線是一個很簡單的問題,起初看起來並不那麼簡單:如何讓自己的腳本與對方進行溝通?

當腳本修改通過JS方法輸入的值(即沒有用戶輸入),他們必須要經過特定的箍獲得「改變」事件觸發(他們可以通過調用它手動啓動它,大多數開發人員從不這樣做,在編寫代碼時很容易被遺忘)。在實踐中,人們傾向於依靠觀察事件(用戶定義的)來跟蹤代碼更改。這與DOM事件非常相似 - 您將回調綁定到您的腳本,這允許您點擊回調,只要腳本執行一些有趣的事情(例如修改輸入,這只是一個示例)就會觸發回調。然後,您可以教您的腳本和開發人員使用回調來觸發有用內容的事件以通知其他腳本。

一個偉大的圖書館是Postal,它最初是一個節點庫。 jQuery還有一個你可以使用的事件系統。然而,如果你想推出自己的產品,你只需要閱讀Observer的設計模式。這是微不足道的:你將一個函數綁定到你的對象上來拾取回調函數,另一個函數將它們釋放。無論何時你改變這個事情,你都會觸發回調。 Simples。

不這樣做意味着setInterval。很爛,但你去那裏:-(