こんにちは、素晴らしい方々です!
今回の問題は、blur ステートメントで mouseClick が発生したかどうかをテストすることです。
すべての入力フィールドが BLUR で検証されるグローバル ソリューションがあります。このイベント内で、特定の要素 (つまり、helpBubble) がクリックされたかどうかをテストする必要があります。クリックされた場合は、検証を実行したくありませんが、特定の要素がクリックされていない場合は、検証が必要です。発生する。
どんな助けでも大歓迎です!!
blur
前にフォーカスされた要素のclick
イベントは、新しくフォーカスされた要素のイベントの前に発生します。そのため、タイムアウトを追加しない限り、移動先に基づいて onblur の検証を防ぐことはできません。例えば:
var validationTimer;
$('#myform input').blur(function(){
var blurred = $(this);
validationTimer = setTimeout(function(){
validationTimer = null;
// Perform Validation on 'blurred'.
},100);
});
$('.helpbubble').click(function(){
if (validationTimer){
clearTimeout(validationTimer);
validationTimer = null;
}
});
これは、検証を実行する前にぼかしの後 100 ミリ秒待機しますが、その時間枠内にクリックが発生した場合 (ほぼ即時に発生します)、クリックが発生する前にキャンセルされます。
編集:これが実際の例です:http://jsfiddle.net/9SzDP/