イベントが IE でユーザーによってトリガーされると、window.event
オブジェクトに設定されます。イベントをトリガーしたものを確認する唯一の方法は、window.event
オブジェクトにアクセスすることです(私の知る限り)
これにより、jQuery を介してイベントをトリガーする場合のように、イベントがプログラムによってトリガーされる場合、ASP.NET バリデーターで問題が発生します。この場合、window.event
オブジェクトは最後にユーザーがトリガーしたイベントを格納します。
ASP.NET バリデーターがアタッチされているテキスト ボックスに対してプログラムによってonchange
イベントが発生すると、バリデーターの対象となる要素ではなく、最後のイベントを発生させた要素が参照されるため、検証が中断されます。
誰もこれを回避する方法を知っていますか? 解決可能な問題のように見えますが、オンラインで見ると、ほとんどの人は問題を解決するのではなく、問題を無視する方法を見つけているだけです。
私が具体的に何をしているのかを説明するには
、2 つの ASP.NET バリデーターが関連付けられているテキスト ボックスで jQuery タイム ピッカー プラグインを使用しています。時間が変更されると、更新パネルを使用してサーバーにポストバックし、いくつかのことを動的に行うため、そのテキスト ボックスのポストバックをトリガーするために onchange イベントを発生させる必要があります。
jQuery タイム ピッカーは、テキスト ボックスがクリックされたときに表示される非表示の順序付けられていないリストを作成することによって動作します。リスト項目の 1 つがクリックされると、jQuery のchange()
メソッドを介して、プログラムによってテキスト ボックスの「変更」イベントが発生します。
イベントのトリガーはリスト アイテムだったので、IE はリスト アイテムをテキスト ボックスではなく、イベントのソースとして認識します。
テキスト ボックスが変更されるとすぐにこの ASP.NET バリデーターが機能することにはあまり関心がありませんchange
。テキスト ボックスに対してポストバック イベントが呼び出されるように、" " イベントを処理する必要があるだけです。問題は、バリデーターが IE で例外をスローし、イベントのトリガーを停止することです。
Firefox (および他のブラウザーも想定しています) には、この問題はありません。イベント モデルが異なるため、IE のみ。誰かがこれに遭遇し、それを修正する方法を見ましたか?
この問題が他のいくつかの場所で報告されていることがわかりましたが、解決策はありません。