2009-09-24 84 views
1

我需要檢測生成onchange事件的元素的ID。在IE Mobile中捕獲javascript事件

在大多數現代瀏覽器此代碼的工作:

<input type="text" onchange="return onchange_handler(event);" 

function onchange_handler(event) { 
    var id = event.target ? event.target.id : event.srcElement.id; 
    ... 
    return false; 
} 

不過,這並不在IE 移動工作。

我曾嘗試下面的代碼,並且至少在事件被觸發和處理函數被調用,但window.event不可用時,事件處理函數:

<input type="text" onchange="return onchange_handler();" 

function onchange_handler() { 
    var event = window.event; // <= evaluated as UNDEFINED 
    var id = event.target ? event.target.id : event.srcElement.id; 
    ... 
    return false; 
} 

有什麼辦法獲得參考被解僱的事件?或者瞭解導致事件的元素的ID的替代方法。

+0

在每一個瀏覽器上的文本框的'change'事件僅觸發當用戶從文本框離開的重點(即上'blur')。您是否驗證過IE Mobile具有相同的特性? – 2009-09-24 12:16:08

+0

是的,即使在IE Mobile中也會觸發事件,但我無法找到訪問事件(window.event)變量的方法。 – 2009-09-24 13:30:24

+0

在IE Mobile上可以使用*任何*事件嗎?從我可以在這裏看到的:http://www.google.com/search?q=cache:qpi5snb2FLMJ:https://connect.microsoft.com/feedback/ViewFeedback.aspx%3FFeedbackID%3D312339%26SiteID%3D502+%22IE +移動%22 + OR +%22移動+ IE%22 +事件似乎在該瀏覽器上嚴重缺乏基本的DOM事件支持。 – 2009-09-24 16:58:11

回答

2

一種解決方法是通過元素的回調:(未經測試)

<input type="text" id="mytextbox" onchange="return onchange_handler(this);" 

function onchange_handler(element) { 
    var id = element.id; 
    ... 
    return false; 
} 
+0

謝謝你,它有效,但它迫使我保留兩個版本的腳本。我接受你的答案,因爲它可能是唯一的解決方案。 – 2009-11-18 18:40:28