当用户在 IE 中触发事件时,它被设置为window.event
对象。查看触发事件的唯一方法是访问window.event
对象(据我所知)
如果以编程方式触发事件(例如通过 jQuery 触发事件时),这会导致 ASP.NET 验证器出现问题。在这种情况下,window.event
对象存储最后一个用户触发的事件。
当以onchange
编程方式为附加了 ASP.NET 验证器的文本框触发事件时,验证会中断,因为它正在查看触发最后一个事件的元素,而不是验证器所针对的元素。
有谁知道解决这个问题的方法?这似乎是一个可以解决的问题,但从网上看,大多数人只是想方设法忽略问题而不是解决它。
为了解释我具体在做什么:
我在一个文本框上使用了一个 jQuery 时间选择器插件,该文本框也有 2 个与之关联的 ASP.NET 验证器。当时间改变时,我使用更新面板回发到服务器以动态地做一些事情,所以我需要触发 onchange 事件以触发该文本框的回发。
jQuery 时间选择器通过创建一个隐藏的无序列表进行操作,当单击文本框时该列表可见。change()
当单击列表项之一时,通过 jQuery 的方法以编程方式为文本框触发“更改”事件。
因为事件的触发器是一个列表项,所以 IE 将列表项视为事件的源,而不是文本框,就像它应该的那样。
我不太关心这个 ASP.NET 验证器在文本框更改后立即工作,我只需要处理“ change
”事件,以便为文本框调用我的回发事件。问题是验证器在 IE 中抛出异常,阻止任何事件被触发。
Firefox(我假设其他浏览器)没有这个问题。由于事件模型不同,只有 IE。有没有人遇到过这个并看到如何解决它?
我发现这个问题报告了其他几个地方,但他们没有提供解决方案: