jQuery UI ダイアログで内部 JavaScript 関数プロンプトをシミュレートしようとしています。ほぼ完璧に動作します - わずかなエラーが 1 つだけです :-)
ダイアログが 2 回目に表示されたとき (ページのリロードなし)、入力フィールドのテキストが選択されていません - なぜでしょうか。
私はこのコードを使用します:
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
リンク「ModalPrompt test」を2回アクティブにするだけです
2 回目に表示されたダイアログが既に作成されているという事実に関連するものである必要があります。すべての $("#promptid").select(); 呼び出しは結果なしで発生するので、後でこれを変更する必要がありますか?
前もって感謝します!ベニー