Javascript jQuery UI对话框-第二次显示未选择的文本
我试图用jQueryUI对话框模拟内部javascript函数提示符。 几乎可以完美工作-只有一个小错误:-) 第二次显示对话框时(不重新加载页面),输入字段中的文本未被选中-为什么 我使用以下代码:Javascript jQuery UI对话框-第二次显示未选择的文本,javascript,jquery,jquery-ui,dialog,prompt,Javascript,Jquery,Jquery Ui,Dialog,Prompt,我试图用jQueryUI对话框模拟内部javascript函数提示符。 几乎可以完美工作-只有一个小错误:-) 第二次显示对话框时(不重新加载页面),输入字段中的文本未被选中-为什么 我使用以下代码: function modalprompt(text, title, prompt, callback) { var newDiv = $("<div title='" + title + "'/>"); function okreply() { new
function modalprompt(text, title, prompt, callback) {
var newDiv = $("<div title='" + title + "'/>");
function okreply() {
newDiv.dialog("close");
if (callback) callback($("#promptid").val());
}
function cancelreply() {
newDiv.dialog("close");
if (callback) callback(false);
}
newDiv.keyup(function (e) {
if (e.keyCode == 13) {
okreply();
}
});
/*
newDiv.focus(function()
{
this.select();
});
*/
var htmltext = "<p>" + text + "</p>";
htmltext += "<input id='promptid' type='text' name='promptid' value='" + prompt + "' style='width: 100%; box-sizing: border-box; -webkit-box-sizing:border-box; -moz-box-sizing: border-box;'>";
newDiv.html(htmltext).dialog({
modal: true,
width: 480,
show: "blind",
hide: "blind",
focus: function (event, ui) {
$("#promptid").select();
},
open: function (event, ui) {
$("#promptid").select();
},
create: function (event, ui) {
$("#promptid").select();
},
buttons: [{
text: $.alerts.okButton,
click: function () {
okreply();
}
}, {
text: $.alerts.cancelButton,
click: function () {
cancelreply();
}
}]
});
}
函数modalprompt(文本、标题、提示、回调){
var newDiv=$(“”);
函数okreply(){
新建分区对话框(“关闭”);
if(callback)callback($(“#prompid”).val());
}
函数cancelreply(){
新建分区对话框(“关闭”);
if(回调)回调(false);
}
新分区键控(功能(e){
如果(e.keyCode==13){
okreply();
}
});
/*
newDiv.focus(函数()
{
这是select();
});
*/
var htmltext=“”+text+””;
htmltext+=“”;
html(htmltext).dialog({
莫代尔:是的,
宽度:480,
表演:“盲人”,
隐藏:“盲”,
焦点:功能(事件、用户界面){
$(“#prompid”).select();
},
打开:功能(事件、用户界面){
$(“#prompid”).select();
},
创建:函数(事件、用户界面){
$(“#prompid”).select();
},
按钮:[{
文本:$.alerts.ok按钮,
单击:函数(){
okreply();
}
}, {
文本:$.alerts.cancel按钮,
单击:函数(){
取消回复();
}
}]
});
}
您可以在此处自行测试:
只需激活链接“ModalPrompt测试”2次
必须与第二次显示对话框时已创建的事实有关。所有的$(“#prompid”).select();呼叫会在没有任何结果的情况下触发,因此必须在事后进行更改
提前谢谢你!
Benny好的,我不知道为什么它不起作用,但添加了此事件处理程序:
close: function(event, ui) { newDiv.remove(); },
这就是诀窍。因此,当创建了多个div时,所选调用会转到第一个div,并且不会影响显示的对话框