0

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(); 呼び出しは結果なしで発生するので、後でこれを変更する必要がありますか?

前もって感謝します!ベニー

4

1 に答える 1

0

OK、なぜ機能しないのかわかりませんが、このイベントハンドラーを追加します:

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

トリックを行います。したがって、作成された複数の div がある場合、選択された呼び出しは最初の div に移動し、表示されたダイアログには影響しません。

于 2012-05-22T16:03:20.517 に答える