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