2009-09-24 80 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