2012-09-12 127 views
2

我試圖用jQuery改變輸入字段的值裏面輸入字段的值。輸入字段在UI對話框內。這是我的Zend形式無法設置jQuery UI的對話框

<input name="formulaCategory" id="formulaCategory" value="" size="40" type="text"> 

的一部分,我有一個鏈接要求,顯示對話框的功能,我希望它改變該輸入的值也是如此。

function editFormulaCategoryDialog() { 

    $("#edit-formula-category-dialog").dialog({show: "slide"}); 
    $("#formulaCategory").val('test'); 
} 

爲什麼它不起作用?

如果我把代碼輸入上的其他頁面外對話框的地方,並點擊同一個鏈接對話框中顯示了與預期輸入領域之外對話的值被改變。

回答

4

試試這個:

function editFormulaCategoryDialog() { 

    $("#edit-formula-category-dialog").dialog({ 
     show: "slide", 
     create: function() { 
      $("#formulaCategory").val('test'); 
     } 
    }); 
} 

嘗試用一個回調對話框create後。您還可以使用open事件回調。

+0

謝謝,作品像一個魅力! – kasztelan

2

上運行時jQuery UI的刪除所有文檔對象,並把它側的DOM在這個時候沒有任何物體會爲你進行訪問。這就是所有Jquery UI插件的默認行爲。所以你必須承擔一些如何改變你使用它的方式。

而且也沒有辦法讓dialog獨自離開你的元素,就不可能正確地顯示該對話框。如果您想使用這種在對話框中顯示部分表單的模式,則必須使用dialog回調方法來動態填充表單中的隱藏字段。

+0

我剛剛給你答案爲什麼?在發佈 –

2

我需要類似的解決方案,嘗試使用setTimeout函數小的延遲。它爲我工作。

function myCreateDialogFn(){ 
    //.....create jQuery Dialog here; 

    setTimeout(function() { 
     $("#edit-formula-category-dialog").find('input').each(function() { 
      if (this.name=="formulaCategory"){ 
       // your code here 
      } 
     } 
    }, 200); 
}