2017-04-21 116 views
2

嗨我正在使用jquery對話框,並且我需要有一些帶有所需數據的文本字段。每次更新文本字段值

當我們點擊一​​個包含4個輸入文本字段的按鈕並且這些輸入必須基於點擊的按鈕的數據 自動完成時,該對話框打開。

這裏我創建了一個有一個文本字段的代碼,它的值是從每次點擊時更新的valueofText獲得的。我還用 控制檯檢查值是否正在更新。

我的代碼是

 valueofText = row //changes every time 

     var $dialog = $('<div></div>') 
      .html('<form>Enter email address <input id=emailAddresss type="text"></form>') 
      .dialog({ 
       autoOpen: false, 
       modal: true, 
       height: 300, 
       width: 500, 
       draggable: false, 
       title: "Some title", 

       open: function (event, ui) { 
       // $("#emailAddresss").val(valueofText); 
       console.log("id is "+valueofText); 
       document.getElementById('emailAddresss').value = valueofText; 
       $(this).css('overflow', 'hidden'); 
       } 
       }); 
      $("#emailAddresss").val(''); 
      $dialog.dialog('open'); 

我的問題是,如果我們打開模式窗口,它再次不顯示任何值,它僅更新一次即可。我在這裏做什麼錯了?

+1

我認爲你在每次點擊時創建對話框而不刪除舊對話框。這意味着該值將被更改爲第一個crated對話框(因爲emailAddresss是一個id),但是您打開一個新創建的對話框 –

+0

,所以我該如何解決這個問題? – shv22

+0

發佈了一個可能的解決方案。 –

回答

0

你應該得到emailAdresss孩子當前對話框,如:

$(this).find('#emailAddresss').val(valueofText); 

參見下面的例子中,在那裏我已經創造了4個對話框:

var html = '<form>Enter email address <input id="emailAddresss" type="text"></form>'; 
 

 
function openDialog(valueofText){ 
 
    var $dialog = $('<div></div>') 
 
    .html(html) 
 
    .dialog({ 
 
    autoOpen: false, 
 
    modal: true, 
 
    height: 200, 
 
    width: 250, 
 
    draggable: false, 
 
    title: "Some title", 
 

 
    open: function (event, ui) { 
 
     console.log("id is "+valueofText); 
 
     $(this).find('#emailAddresss') 
 
     .val(valueofText); 
 
     $(this).css('overflow', 'hidden'); 
 
    } 
 
    }); 
 
    $dialog.dialog('open'); 
 
} 
 

 
for(valueofText=1; valueofText<5; valueofText++){ 
 
    openDialog(valueofText); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

+0

超級現在正在工作...謝謝 – shv22

0

我想你創建的每個點擊與刪除舊的對話框。這意味着該值將在第一個crated對話框中更改(因爲emailAddresss是一個id),但是您打開了一個新創建的對話框。

如果我是正確的,你有兩個選擇:

  1. 創造新的之前刪除舊的對話。 用一個id var $dialog = $('<div id="myDialog"></div>')並創建一個新的刪除$('#dialog').remove();

  2. 創建一個對話框,只有一次在頁面加載(甚至更好的把它作爲HTML)和點擊只改變emailAddress,並打開對話框之前創建對話框。

+0

我試過你的第一個解決方案,它不工作 – shv22