0

x時間後に表示されるポップアップボックスがあり、その中にhtmlフォームと2つのテキスト入力があります。

ユーザーがポップアップの外をクリックするとすぐに、フォーカスリスナーにポップアップを閉じさせようとしています。

これを行うために、フォーム全体にフォーカスアウトを設定しようとしました。これは、両方の入力がフォーカスを失ったときに正常に登録されますが、ある入力から別の入力にフォーカスを切り替えるときにも登録されます。

これはもちろん、ユーザーがフォームに入力することを許可せずにポップアップを閉じます。

以下のHTML

<form class="emailForm" name="signup" method="post" >
                Email address<br />
                <input type="text" id="rm_email" name="rm_email" />
                <br />
                First name<br />
                <input type="text" id="rm_first_name" name="rm_first_name" />
</form>

そして、スクリプト

$('.emailForm').focusout(function() {

        //alert("focus lost");
        $('#emailPrompt').fadeOut("fast");

});

それが役立つ場合は、ここにライブサイトがあります(ポップアップはしばらくすると表示されます)

http://masterzangetsu.eu/

4

3 に答える 3

0

これは一種のハックですが、試すことができます:

$('.emailForm').focusout(function() {

        sleep(2000);    //2 seconds
        if(!$('.emailForm').is(":focus"))
        {
            $('#emailPrompt').fadeOut("fast");
        }

});
于 2014-01-09T00:35:09.247 に答える
0

フェードアウトを別のイベントにバインドすることをお勧めします-おそらく、ユーザーがポップアップ/モーダルの外側をクリックしたとき、またはユーザーが閉じるボタンまたは送信ボタンをクリックしたときですか?

クリック イベントを本文にバインドするか、モーダル ダイアログにそのようなものがある場合はオーバーレイにバインドできます。

これらのアイデアを実装する方法の例については、この回答を確認してください:モーダル ウィンドウの外側をクリックしてモーダルを閉じるには?

于 2014-01-09T00:43:00.507 に答える