我正在使用对话框向db添加新用户,如果验证通过并且用户成功保存,我想关闭对话框。请建议
$('.add_user_link a').each(function () {
var $link = $(this);
var $dialog = $('<div id="dialog"></div>')
.load($link.attr('href') + ' #content')
.dialog({
autoOpen: false,
title: $link.attr('title'),
});
$link.click(function () {
$dialog.dialog('open');
$('#add_user').submit(function () {
url = '/user/useradd/';
$.ajax({
type: "POST",
cache: false,
url: $('#add_user').attr('action'),
data: $('#add_user').serializeArray(),
success: function (data) {
var json_obj = $.parseJSON(data);
var result = json_obj['result'];
var lname = json_obj['lname'];
var email = json_obj['email'];
var fname = json_obj['fname'];
if (!result) {
$("#dialog").dialog('close');
}
else {
//
document.getElementById('email-error').innerHTML = email;
var fname_count = $("label[id*='errorfname']").length;
$('input[name=fname]').after('<label id="errorfname"></label>');
document.getElementById('errorfname').innerHTML = fname;
var lname_count = $("label[id*='errorlname']").length;
if (lname_count == 0) {
$('input[name=lname]').after('<label id="errorlname"></label>');
document.getElementById('errorlname').innerHTML = lname;
}
}
}
});
return false;
});
return false;
});
});
我收到此错误
jquery-1.11.1.min.js:2未捕获错误:在初始化之前无法调用对话框上的方法;试图调用方法'关闭'
答案 0 :(得分:1)
替换:
$("#dialog").dialog('close');
使用
$dialog.dialog('close')
您已经在click函数中为对话框设置了一个变量,该变量应该在范围内,因此您无需重新选择它。
更新: 元素ID应该是唯一的,因此如果有多个链接,则在为链接添加时,应使对话框ID唯一。否则,当有多个链接时,当你执行$('#dialog')时,你将选择多个对话框元素。
执行此操作时:
$dialog = $('<div id="dialog"></div>')
ID值“对话框”应该是唯一的,例如“dialog1”,“dialog2”等。