我已定义function
用于在html
中显示一些jqueryui dilaog
内容:
function ui_window(title, dialogWidth, content,buttons,className)
{
$('<div id="window">').html(content).
dialog({
title: title,
show: 'drop',
hide: 'drop',
width: dialogWidth,
buttons: buttons,
close: function (ev, ui) { $(this).remove(); },
position: { my: 'center', at: 'center', of: window }
}
).addClass(className);
return false;
}
这是调用上述function
的另一个javascript function
:
function checkForValidCommand()
{
var content = getInnerHTML("#checkForValidCommand");
var myFunc = function ()
{
var pensionerID = $('#txtID').val();
alert(pensionerID);
$(this).dialog('destroy');
}
else
$('#txtID').focus();
}
var buttons = [{ text: 'OK', click: myFunc}];
ui_window("Pensioner", 410, content, buttons);
}
当我第一次拨打“checkForValidCommand
”并且input
value
再次拨打textbox
并按下确定后,我会收到一条警告,其值为textbox
。然后,当我再次拨打function
并按“确定”而不将任何内容投入textbox
时,我仍然会使用旧alert
获取value
。我的代码有什么问题?
编辑:这是html内容,如果你想看到:
<table>
<tr>
<td align="right">
<label>
Insert the pensioiner's ID:
</label>
</td>
<td>
<input id="txtID" type="text" onkeydown="return onlyNumbers(event);" maxlength="8"/>
</td>
</tr>
</table>
答案 0 :(得分:1)
$(this).dialog('destroy');
也没有解决问题。(为什么这个命令不能完全删除对话框是另一回事)。然后我突然想起了$('#id')
:的工作原理
It goes and selects the first matching element with the specified id.
这是必要的线索。我确信以前的对话框没有从正文中删除。当我检查身体时,我发现我是对的。所有的对话都在那里,在身体里。我尝试了很多方法来彻底删除div并停在我找到的唯一一个工作上。我做的是在显示对话框之前输入以下代码:
$('body').find("#window").remove();
所以显示jquery对话框的包装器函数现在看起来像这样:
function ui_window(title, dialogWidth, content,buttons,className)
{
$('body').find("#window").remove();
$('<div id="window">').html(content).
dialog({
title: title,
show: 'drop',
hide: 'drop',
width: dialogWidth,
buttons: buttons,
position: { my: 'center', at: 'center', of: window }
}
).addClass(className);
return false;
}
现在一次只有一个对话框。快乐jQuerying。