當IE中的用戶觸發事件時,它將設置爲window.event
對象。查看觸發事件的唯一方法是訪問window.event
對象(據我所知)使用jQuery以編程方式在Javascript中爲IE觸發事件
如果以編程方式觸發事件(如通過jQuery觸發事件),會導致ASP.NET驗證器出現問題。在這種情況下,window.event
對象存儲上次用戶觸發的事件。
當以編程方式激發onchange
事件以使其中附帶有ASP.NET驗證程序的文本框時,驗證會因爲它正在查看觸發最後一個事件的元素而中斷,而不是驗證程序所用的元素。
有沒有人知道解決這個問題的方法?這似乎是一個可以解決的問題,但從網上查看,大多數人只是想辦法忽略問題而不是解決問題。
爲了解釋我專門做什麼:
我使用的是一個文本框,也有與之相關聯的2個ASP.NET驗證一個jQuery的時間選擇器插件。當時間改變時,我正在使用更新面板回發到服務器以動態地執行一些操作,所以我需要觸發onchange事件才能觸發該文本框的回發。
jQuery時間選擇器通過創建隱藏的無序列表來操作,該列表在單擊文本框時變得可見。當單擊其中一個列表項時,通過jQuery的change()
方法以編程方式爲文本框觸發「更改」事件。
因爲事件的觸發器是一個列表項,所以IE將列表項視爲事件的來源,而不是文本框。
我並不太在意這個ASP.NET驗證器在文本框更改後立即工作,我只需要處理「change
」事件,以便爲文本框調用回發事件。問題是驗證器在IE中引發異常,從而阻止任何事件被觸發。
Firefox(我假設其他瀏覽器)沒有這個問題。由於不同的事件模型,只有IE。有沒有人遇到過這種情況,並看到如何解決它?
我發現這個問題報道的其他幾個地方,但他們沒有提供解決方案:
- jQuery's forum, with the jQuery UI Datepicker and an ASP.NET Validator
- ASP.NET forums, bug with ValidatorOnChange() function
我遇到的問題是我的公司想嚴格使用ASP驗證器。到目前爲止,我沒有這樣做過,但我認爲我將不得不考慮使用jQuery驗證,因爲我的當前解決方案不起作用。 – 2008-10-04 02:11:08