5

フォーム検証スクリプトを作成していて、onblurイベントが発生したときに特定のフィールドを検証したいと思います。また、イベントバブリングを使用したいので、個々のフォームフィールドにonblurイベントを添付する必要はありません。残念ながら、onblurイベントはバブルしません。同じ効果を生み出すことができるエレガントなソリューションを誰かが知っているかどうか疑問に思っています。

4

5 に答える 5

9

focusout標準に準拠したブラウザとIEの場合は、(バブリングではなく)イベントキャプチャを使用する必要があります。

if (myForm.addEventListener) {
    // Standards browsers can use event Capturing. NOTE: capturing 
    // is triggered by virtue of setting the last parameter to true
    myForm.addEventListener('blur', validationFunction, true);
}
else {
    // IE can use its proprietary focusout event, which 
    // bubbles in the way you wish blur to:
    myForm.onfocusout = validationFunction;
}

// And of course detect the element that blurred in your handler:
function validationFunction(e) {
    var target = e ? e.target : window.event.srcElement;

    // ...
}

ジューシーな詳細については、http: //www.quirksmode.org/blog/archives/2008/04/delegating_the.htmlを参照してください。

于 2009-10-06T14:16:10.717 に答える
5

バブルアップ効果があるので、 「フォーカスアウト」イベントを使用してください。

于 2012-10-23T10:47:36.333 に答える
2

ppkには、IEに必要な回避策を含む、このための手法があります。http ://www.quirksmode.org/blog/archives/2008/04/delegating_the.html

于 2009-10-06T14:10:03.720 に答える
0

イベントでバブリングを使用するにonblurは、addEventListener()を使用して、useCaptureパラメーターをfalseに設定します。このような:

yourFormInput.addEventListener('blur', yourFunction, false);

Firefox51以下はこのonfocusoutイベントをサポートしていません。したがって、イベントonfocusoutの代わりに使用しないでください。onblur

于 2017-03-09T09:16:01.667 に答える
-2

aa、フォームにonblurイベントを追加するだけで、フォーム内の要素のいずれかにフォーカスを変更するたびに検証が呼び出されます

于 2009-10-06T13:59:22.550 に答える