2013-10-04 58 views
0

我想創建一個jQuery對話框並需要添加按鈕。如何在創建Jquery對話框UI後添加按鈕

我正在使用下面的代碼在IE中可以正常工作,但不能在Mozilla中使用。

任何人都可以弄清楚這裏有什麼問題嗎?

function dialog_box(dynDiv, rootTemplate) { 
    var dialog_buttons = rootTemplate.buttons; 
    var dialog = $("#" + dynDiv.id).dialog({ 
     hide: "explode", 
     title: rootTemplate.etype, 
     buttons:'', 
     text: rootTemplate.text, 
     resizable: true, 
     minWidth: 200, 
     minHeight: 150, 
     close: function() { 
      $(dialog).dialog('destroy').remove(); 
     } 
    }); 


    var buttonSet = $("#" + dynDiv.id).parent().find('.ui-dialog-buttonset'); 
    $.each(dialog_buttons, function (index, props) { 
     var newButton = $('<button></button>', { 
      id: "btn" + dynDiv.id + props.id, 
      text: props.text 
     }); 
     newButton.button().unbind().on("click", props.handler); 

     $(buttonSet).append(newButton);  
    }); 


} 

Sample

回答

0

我想你可以創建按鈕的選項,使用按鈕選項,創建對話框時:

http://api.jqueryui.com/dialog/#option-buttons

$(".selector").dialog({ 
    buttons: [ { 
     text: "Ok", 
     click: function() { 
      $(this).dialog("close"); 
     } 
    } ] 
}); 
+0

我不能指定你所提供的值。我需要從輸入變量中獲取值來創建按鈕。 –

+1

創建對話框後,您可以設置該選項,同時調用$(「。selector」)。dialog(「option」,「buttons」,...) – Robert

2

試試這個:

// Retrieve buttons hash 
var buttons = dialog.dialog("option", "buttons"); 
// Extend the hash (so you're able to keep the old buttons) 
$.extend(buttons, { props.text: props.handler }); 
// Set it again 
dialog.dialog("option", "buttons", buttons); 
+0

它顯示語法錯誤。 –

+0

我修改了示例代碼。儘管語法錯誤,它是否工作? –

+0

要擴展@KT,您還可以添加其他按鈕,如'$ .extend({},{props.text:props.handler},buttons);' – GoldBishop

0

我在發佈的代碼中做了一些小改動,並且工作正常。修改部分突出顯示

function dialog_box(dynDiv, rootTemplate) { 
     var dialog_buttons = rootTemplate.buttons; 
     var dialog = $("#" + dynDiv.id).dialog({ 
      hide: "explode", 
      title: rootTemplate.etype, 
      **buttons:[{}],** 
      text: rootTemplate.text, 
      resizable: true, 
      minWidth: 200, 
      minHeight: 150, 
      close: function() { 
       $(dialog).dialog('destroy').remove(); 
      } 
     }); 


     var buttonSet = $("#" + dynDiv.id).parent().find('.ui-dialog-buttonset'); 
     **$(buttonSet).empty();** 
     $.each(dialog_buttons, function (index, props) { 
      var newButton = $('<button></button>', { 
       id: "btn" + dynDiv.id + props.id, 
       text: props.text 
      }); 
      newButton.button().unbind().on("click", props.handler); 

      $(buttonSet).append(newButton);  
     }); 


    } 

所以在創建JqueryUI對話框時添加了一個空的按鈕組。 清除按鈕集後,我已經添加了按鈕。

+0

您是否嘗試使用@ $ .extend' @ KT?如果在規定的初始化按鈕之前需要新的按鈕,還有一種方法:'.extend({},{props.text:props.handler},buttons);' – GoldBishop