2010-10-25 9 views
8

Selon le code ci-dessous pour afficher une boîte de dialogue JQuery, le texte du bouton s'affiche sous la forme littérale "b" par opposition à la valeur de la variable b. Par exemple, showWarningDialog('myBody', 'myTitle', 'go') affiche une boîte de dialogue avec un bouton portant la mention b au lieu de go.jQuery modal texte du bouton de la boîte de dialogue

Comment faire apparaître go?

function showWarningDialog(theBody, theTitle, buttonText) { 
    var t = "Warning"; 
    if (theTitle != null) { 
     t = theTitle; 
    } 

    var b = "Ok"; 
    if (buttonText != null) { 
     b = buttonText; 
    } 

    $("#div-dialog-warning div").text(theBody); 

    $("#div-dialog-warning").dialog({ 
     title: t, 
     resizable: false, 
     height: 160, 
     modal: true, 
     buttons: { 
      b : function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

Répondre

13

As per the jQuery UI docs, le nom du bouton vient de la clé dans l'objet buttons du bouton. Dans ce cas, remplacer ce bit:

$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

avec ceci:

var buttonOpts = {}; 
buttonOpts[b] = function() { 
    $(this).dialog("close"); 
}; 
$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: buttonOpts 
}); 

Vous devez traiter b comme une variable, donc en utilisant buttonOpts[b] plutôt que ce que vous avez fait, ce qui est le équivalent de en utilisant buttonOpts.b.

0

{b: 'blah'} wil signifie qu'il prend b comme un nom de variable. définir le tableau à la main pourrait le réparer bien que je ne peux pas imaginer qu'il n'y a pas une syntaxe spéciale pour cela var buttons = {}; boutons [b] = fonction() {}; $(). Dialog ({boutons: boutons});

0

Je pense que vous avez manquant paramètre dans le tableau congig. Il devrait y avoir quelque chose comme

buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     }, 
     buttonText: b 
} 
+0

Il n'y a pas d'option 'buttonText'. Selon les docs, 'La clé de propriété est le texte du bouton'. –

2

voici ce que vous devez ajouter AFTE Ryou initialiser votre boîte de dialogue:

$('div.ui-dialog-buttonpane button:contains(b)').empty().html(b); 

vous aurez probablement envie de renommer b être quelque chose d'un peu plus descriptif et unique bien.

Questions connexes