Javascript jqueryui模态问题
我试图绑定一个按键(“enter”)来触发jQuery模态对象中的函数。在下面的代码中,我希望在检测到按键事件时触发$(this).dialog(“login”)。然而,我似乎无法调用self.dialog(“登录”)。我是不是看错了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
$("#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();
啊,我真傻——我早该知道的。谢谢你的帮助!啊,我真傻——我早该知道的。谢谢你的帮助!