Javascript jqueryui模态问题

Javascript jqueryui模态问题,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我试图绑定一个按键(“enter”)来触发jQuery模态对象中的函数。在下面的代码中,我希望在检测到按键事件时触发$(this).dialog(“login”)。然而,我似乎无法调用self.dialog(“登录”)。我是不是看错了 $("#login-dialog").dialog({ autoOpen: false, height: 250, width: 350, modal: true, ope

我试图绑定一个按键(“enter”)来触发jQuery模态对象中的函数。在下面的代码中,我希望在检测到按键事件时触发$(this).dialog(“login”)。然而,我似乎无法调用self.dialog(“登录”)。我是不是看错了

      $("#login-dialog").dialog({
        autoOpen: false,
        height: 250,
        width: 350,
        modal: true,
        open: function() {
            var self = $(this);
            $("#login-dialog").load("/accounts/login/", function() {
                $("#id_username").focus()
                .keypress(function(event) {
                    if (event.which == 13) {
                        event.preventDefault();
                        self.dialog("login");
                    }
                });
            });
        },

        buttons: {
            close: function() {
                $(this).dialog("close");
            },

            login: function() {
                $.ajax({
                    type: "POST",
                    url: "/accounts/login/",
                    data: $("#login-form").serialize(),
                    success: function(data) {
                        var errors = $(data).find("#login-error").val();
                        if (errors) {
                            $("#error-message").replaceWith("<p class='error'>" + "Your username and password didn't match" + "</p>");
                        } else {
                            window.location = "/builder";
                        }
                    }
                });
            }
        }
    });
$(“#登录对话框”).dialog({
自动打开:错误,
身高:250,
宽度:350,
莫代尔:是的,
打开:函数(){
var self=$(这是);
$(“#登录对话框”).load(“/accounts/login/”,函数(){
$(“#id_用户名”).focus()
.按键(功能(事件){
if(event.which==13){
event.preventDefault();
self.dialog(“登录”);
}
});
});
},
按钮:{
关闭:函数(){
$(此).dialog(“关闭”);
},
登录:函数(){
$.ajax({
类型:“POST”,
url:“/accounts/login/”,
数据:$(“#登录表单”).serialize(),
成功:功能(数据){
var errors=$(数据).find(#登录错误”).val();
如果(错误){
$(“#错误消息”)。替换为“

”+”您的用户名和密码不匹配“+”

”; }否则{ window.location=“/builder”; } } }); } } });
我会在登录表单的
onsubmit
事件中附加一个处理程序。使用此处理程序,使用适当的字段值调用
login
函数(防止事件出现默认值,以便表单不会实际提交)

现在,这样做的一个很好的副作用是,在窗体上按ENTER键时,该处理程序将被调用。这种方法也会降低性能,使所有代码都更易于移植


就我个人而言,我使用一个插件,您只需将表单元素传递到该插件,它将使用所有表单属性和输入元素通过ajax发送该插件。

我将向登录表单的
onsubmit
事件附加一个处理程序。使用此处理程序,使用适当的字段值调用
login
函数(防止事件出现默认值,以便表单不会实际提交)

现在,这样做的一个很好的副作用是,在窗体上按ENTER键时,该处理程序将被调用。这种方法也会降低性能,使所有代码都更易于移植


就我个人而言,我使用一个插件,您只需将一个表单元素传递到其中,它将使用所有表单属性和输入元素通过ajax发送

$("#login-dialog").dialog("option").buttons.login();

为解决您的问题,在“按键”功能中使用以下代码

$("#login-dialog").dialog("option").buttons.login();

啊,我真傻——我早该知道的。谢谢你的帮助!啊,我真傻——我早该知道的。谢谢你的帮助!