0

jQuery UI ダイアログ ボックスを使用して画像の URL を入力しています。私は次の方法を使用しています:

 <input id="dlg" value="Open Dialog" type="button" />

<script type="text/javascript">
var img = '<div id="dialog" title="Insert Image" style="width:500px;height:300px">';
img += '<table><tr><td style="width:100px">';
img += 'Image URL: </td><td><input id="txt" type="text" value="" size="52" /></td>';
img += '</tr></table></div>';

$('#dlg').click(function(){

$(img).dialog({buttons: {'Ok':function(){
    var value = $("#txt").val();
    var http = value.substr(0,7);

    alert(value);

    $(this).dialog('close');
}}},

 { closeOnEscape:true, resizable:false, width:600, height:200

 });


});
</script>

ボタンを(<input id="dlg" value="Open Dialog" type="button" />)押すと、ダイアログボックスが表示され、テキストボックス入力フィールドが表示されます。テキストフィールドに値を入力すると、その値が警告されます。しかし、ボタンを2回または3回押して、ダイアログのテキストボックスに他の値を入力し、[OK]を押すと、初めて入力した値が警告されます。そのため、何度ボタンをクリックして値を入力しても、最初に入力した値にアラートが表示されます。

この方法でテキスト ボックスの値var value = $("#txt").val();を正しく取得できますか? はいの場合、初めて入力した値が表示される理由を教えてください。

注: ブラウザのキャッシュを何度もクリアしたので、キャッシュの問題が発生する可能性はありません。

4

4 に答える 4

2

問題は、それを呼び出すたびに、ダイアログの新しいコピーを作成していることです。つまり、同じ名前の要素が複数あるということです。これを回避するには、ダイアログを閉じた後にダイアログを破棄する必要があります。

変化する:

$(this).dialog('close');

$(this).dialog('close').dialog("destroy");

他のオプションは、要素を一度作成してから再利用することです。

于 2013-04-12T15:18:54.173 に答える
1

txt アイテムが複数回作成されているようです。完了したら、アイテムを DOM から削除する必要があります。

このセクションで

$(img).dialog({buttons: {'Ok':function(){
    var value = $("#txt").val();
    var http = value.substr(0,7);

    alert(value);

    // save value somewhere

    $("#txt").remove();

    $(this).dialog('close');
}}},
于 2013-04-12T15:19:34.143 に答える