Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery UI对话框-第二次显示未选择的文本_Javascript_Jquery_Jquery Ui_Dialog_Prompt - Fatal编程技术网

Javascript jQuery UI对话框-第二次显示未选择的文本

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

我试图用jQueryUI对话框模拟内部javascript函数提示符。 几乎可以完美工作-只有一个小错误:-)

第二次显示对话框时(不重新加载页面),输入字段中的文本未被选中-为什么

我使用以下代码:

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,并且不会影响显示的对话框