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

jQuery UI dialog - text not selected second time shown

本文关键字:选择 文本 显示 第二次 UI 对话框 jQuery      更新时间:2023-09-26

我正在尝试使用jQuery UI对话框模拟内部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();
            }
        }]
    });
}

您可以在此处自行测试:http://pcrypt.dk/dev/login.php?logout

只需激活链接"模态提示测试"2次

必须与第二次显示对话框已创建的事实相关。所有 $("#promptid"(.select((;调用会在没有任何结果的情况下触发,所以之后必须改变这一点吗?

提前谢谢你!班尼

好的,我不知道为什么它不起作用,但是添加此事件处理程序:

close: function(event, ui) { newDiv.remove(); },

能做到诀窍。因此,不知何故,当创建了多个div 时,所选调用将转到第一个div,并且不会影响显示的对话框。