ユーザーによる 1 つのアクションが 2 つのイベントをトリガーするはずなのに、最初のイベントのみをトリガーするというこの問題に遭遇しています。
シナリオ:
ユーザーは focusoutのレイアウトを変更する特別なフィールドにテキストを入力し、テキストを入力した後、フィールドを離れずにボタンをクリックします。
何が起こっていますか?
テキスト ボックスに focusout イベントがあり、ボタンにクリック イベントがあります。私が見ているのは、focusout イベントは発生しますが、クリック イベントは発生しません。
これをjsfiddleにカプセル化しました:
$('#theText').focusout(function (){
$("#focusevent").text("Focusevent");
console.log("focus");
});
$('#theButton').click(function (){
$("#clickevent").text("Clickevent");
console.log("click");
});
したがって、テキスト フィールドをクリックしてからボタンをクリックすると、両方のイベントが発生すると予想されますが、フォーカス アウト イベントしか表示されません。
クリックイベントの代わりにマウスダウンイベントでボタンを起動させることでこれを一時的に修正しました(これはフォーカスアウトイベントの前に発生します)が、それは私が見たくない他の動作や問題を引き起こしています. それらのため、最適な解決策は、フォーカスアウトとクリックの両方のイベントを発生させる方法を見つけることだと思います。この問題を解決する方法について考えている人はいますか?
編集:最初の応答を確認した後、もう少し掘り下げました。ここでの問題は、focusout イベントがページ レイアウトを変更し、ボタンの位置がわずかに押し下げられていることです。フォーカスアウトが完了した後にクリック イベントがトリガーされますが、ボタンがまったく同じ場所にないため、何も起こりません。
ここに私の問題を示す更新されたフィドルがあります http://jsfiddle.net/fCz6X/11/