1

次のスタックの回答で提案されている手法を試してみましたが、うまくいきませんでした。

<Enter> で jQuery UI ダイアログを送信

私のコードで何かがおかしいに違いありません。ログイン時に、サイト内で見つかった情報が機密であることをユーザーに警告する免責事項が表示されます。ユーザーがエンターキーを押すだけで続行できるようにしたいと思います。これが私の元のコードです(ブラウザチェックを含めました):

  $("#loginForm").submit(function (e) {
    e.preventDefault();

    if ($.browser.msie) {
        $("#dialog-confirm")
        .dialog({
            resizable: false,
            height: 300,
            width: 550,
            modal: true,
            buttons: {
                "Continue": function (e) {
                    $("#loginForm").unbind('submit').submit(),
                    $(this).dialog("close"),
                    $("#loginForm").submit();
                    $("#btnLogin").click();
                },
                Cancel: function (e) {
                    e.preventDefault();
                    $(this).dialog("close");
                }
            }

        })
    }
    else {
        $("#dialog-browser")
        .dialog({
            resizable: false,
            height: 220,
            width: 480,
            modal: true,
            buttons: {
                "Close": function (e) {
                    e.preventDefault();
                    $(this).dialog("close");
                }
            }
        })
    };
});

これがkeyupコマンドを使用した私のコードです:

$("#loginForm").submit(function (e) {
    e.preventDefault();

    if ($.browser.msie) {
        $("#dialog-confirm")
        .dialog({
            resizable: false,
            height: 300,
            width: 550,
            modal: true,
            buttons: {
                "Continue": function (e) {
                    $("#loginForm").unbind('submit').submit(),
                    $(this).dialog("close"),
                    $("#loginForm").submit();
                    $("#btnLogin").click();
                },
                Cancel: function (e) {
                    e.preventDefault();
                    $(this).dialog("close");
                }
            },
  HERE>>>      open: function() { 
                $("#dialog-confirm").keypress(function(e) { 
                  if (e.keyCode == $.ui.keyCode.ENTER) { 
                    $("#loginForm").unbind('submit').submit(),
                    $(this).dialog("close"),
                    $("#loginForm").submit();
                    $("#btnLogin").click(); 
                  } 
                }); 
              } 
        })
    }
    else {
        $("#dialog-browser")
        .dialog({
            resizable: false,
            height: 220,
            width: 480,
            modal: true,
            buttons: {
                "Close": function (e) {
                    e.preventDefault();
                    $(this).dialog("close");
                }
            }
        })
    };
});

残念ながら、これは私にとってはうまくいきません。私は一生、理由を理解できませんか? 誰かが問題がどこにあるかを見ることができれば、私は非常に感謝しています!

ありがとう!!

4

3 に答える 3

3

私はこれを一日のほとんど脇に置いて、ちょうどそれを再訪しました. うまくいきました!これが私のコードです:

$("#loginForm").submit(function (e) {
    e.preventDefault();

    if ($.browser.msie) {
        $("#dialog-confirm")
        .dialog({
            resizable: false,
            height: 300,
            width: 550,
            modal: true,
            buttons: {
                "Continue": {
                    text: "Continue",
                    id: "btnContinue",
                    click: function (e) {
                        $("#loginForm").unbind('submit').submit(),
                        $(this).dialog("close"),
                        $("#loginForm").submit();
                        $("#btnLogin").click();
                    }
                },
                Cancel: function (e) {
                    e.preventDefault();
                    $(this).dialog("close");
                }
            },
            open: function () {
                $(document).keydown(function (event) {
                    if (event.keyCode == 13) {
                        $("#btnContinue").click();
                    }
                });
            }
        })
    }

基本的に、ダイアログのボタンに ID 値を割り当て、$("#dialog-confirm").keydown の代わりに $(document).keydown を使用しました。関数はダイアログが開いた後にのみ設定されるため、必ずしもページの残りの部分に影響を与えるとは限りません。keydown 関数の中で、ID で呼び出したコンティニュー ボタンを押してもらいます。

みんな助けてくれてありがとう。

于 2012-07-20T19:11:20.470 に答える
1

これを使用してみてください:

$("#dialog-confirm").keydown(function (event) {
        if (event.keyCode == 13) {
            // Submit it
        }
    });
于 2012-07-20T13:44:43.947 に答える
0

ダイアログにフォーカスを得る要素 (つまり、入力要素) がない場合は、この質問で提案されているアプローチを試すことができます: jquery-ui ダイアログ: ダイアログのボタンをデフォルト アクションにする (Enter キー)

于 2012-07-20T13:27:32.780 に答える