ページ上の各 INPUT 要素をループするときに呼び出される JS のビットがあります。
if (thisField.addEventListener){ // good browsers
thisField.addEventListener('focus', function(event){toggleHelpText(this,event)}, true);
thisField.addEventListener('blur', function(event){toggleHelpText(this,event)}, false);
} else if (thisField.attachEvent){ // IE
thisField.attachEvent('onfocus',function(event){toggleHelpText(thisField,event)});
thisField.attachEvent('onblur',function(event){toggleHelpText(thisField,event)});
}
優れたブラウザでは、本来の機能を果たします。各要素にフォーカスおよびぼかしイベント リスナーをアタッチし、トリガーされると、オブジェクトとそれをトリガーしたイベントを関数 'toggleHelpText' に渡します。
ただし、IEは機能しません。IE では、イベント リスナーがアタッチされているすべてのフィールドに、ループ内の最後のオブジェクトのみを参照するオブジェクト 'thisField' があります。
つまり、3 つの入力フィールドがある場合、適切なブラウザーは、field1、field2、および field3 をそれぞれ「this」として渡すフォーカス イベントを呼び出します。
IE では、フォーカス イベントをトリガーするときに、3 つのフィールドすべてが field3 をオブジェクトとして渡します。
解決策はありますか?
また、IE でエラーが発生するためだけに、次の構文オプションを試しました。
thisField.attachEvent('onblur',function(event){toggleHelpText(this,event)});
thisField.attachEvent('onblur',function(this,event){toggleHelpText(thisField,event)});
thisField.attachEvent('onblur',function(this,event){toggleHelpText(this,event)});