javascript - 在 Enter 键上确认 Jquery UI 对话框提示

标签 javascript jquery jquery-ui modal-dialog jquery-ui-dialog

我已经尝试了以下堆栈答案中建议的技术,但没有成功:

Submit jQuery UI dialog on <Enter>

我的代码一定有问题。登录时,我会弹出一个免责声明,警告用户在网站内找到的信息是 secret 的。我希望它能够继续,用户所要做的就是按下回车键。这是我的原始代码(我已经包含了浏览器检查):

  $("#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");
                }
            }
        })
    };
});

不幸的是,这对我不起作用,我终究无法弄清楚为什么?如果有人能看到问题出在哪里,我将不胜感激!

谢谢!!

最佳答案

我把它搁置了一天的大部分时间,然后重新访问它。我让它工作了!这是我的代码:

$("#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 调用的继续按钮。

感谢大家的帮助。

关于javascript - 在 Enter 键上确认 Jquery UI 对话框提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580304/

相关文章:

javascript - Jquery数据表错误: Uncaught TypeError: Cannot read property '0' of undefined

javascript - 如何使用 AngularJS i18n 为不同的语言定义不同的字体?

javascript - JQuery Div 成倍增加

双轴条形图中的 JavaScript 条形图

jquery - 当屏幕尺寸恢复到更大尺寸时,slideToggle 不显示 div

jquery - 如何修复这个 jQuery 附加选择器?

Jquery ui拖放droppable "drop"事件

jquery - 定位div

javascript - 如何在 React 中使用 setState 更新数组元素?

javascript - 传递的对象什么时候发生的?