Quelqu'un peut-il me dire comment utiliser une variable pour le texte du bouton dans la boîte de dialogue de l'interface utilisateur jQuery?.
Cela ne fonctionnera pas à cause de la manière dont jQuery gère le nom du bouton (peut être avec ou sans guillemets)
Cela fonctionnera:
var button_name = 'Test';
var dialog_buttons = {};
dialog_buttons[button_name] = function(){ closeInstanceForm(Function); }
dialog_buttons['Cancel'] = function(){ $(this).dialog('close'); }
$('#instanceDialog').dialog({ buttons: dialog_buttons });
Ce que vous pouvez faire est d’attribuer un ID au bouton dans la boîte de dialogue, puis de le manipuler à l’aide de jQuery standard.
$("#dialog_box").dialog({
autoOpen: false,
modal: true,
resizable: false,
buttons: [{
text: "Ok",
"id": "btnOk",
click: function () {
//okCallback();
},
}, {
text: "Cancel",
click: function () {
//cancelCallback();
},
}],
close: function () {
//do something
}
});
Définir le texte du bouton:
var newLabel = "Updated Label";
$("#btnOk").html('<span class="ui-button-text">'+ newLabel +'</span>')
Le problème ici est que le plug-in de dialogue n'attribue pas d'identifiant à ses boutons, il est donc assez difficile de les modifier directement.
Au lieu de cela, initialisez la boîte de dialogue normalement, localisez le bouton à l'aide du texte qu'il contient et ajoutez un identifiant. Vous pouvez alors accéder directement au bouton pour modifier le texte, le formatage, l’activer/le désactiver, etc.
$("#dialog_box").dialog({
buttons: {
'ButtonA': function() {
//... configure the button's function
}
});
$('.ui-dialog-buttonpane button:contains(ButtonA)').attr("id","dialog_box_send-button");
$('#dialog_box_send-button').html('Send')
Peut-être que je manque le point - mais le moyen le plus simple ne serait-il pas d'utiliser le passeur?
$("#dialog_box").dialog({
buttons: {
[
text:"OK",
click: function() {
//... configure the button's function
}
]
});
$("#dialog_box").dialog("option", "buttons", { "Close": function() { $(this).dialog("close"); } });
Cela peut être fait dans les étapes suivantes:
L'exemple suivant explique les étapes ci-dessus.
var btnArray = [ { text: "Add Entry", click: function(){ this.retVal = true; addRowIntoTemplateManifest(); $(this).dialog('close'); } }, { text: "Cancel", click: function(){ this.retVal = false; $(this).dialog('close'); } } ];
Une fonction personnalisée displayConfirmDialog_Dynamic () est écrite, qui accense, en-tête de dialogue, texte de dialogue, bouton Tableau. L'appel à cette fonction est comme suit:
displayConfirmDialog_Dynamic("Add Template Manifest Entry?", "Do you want to add following Cuboid Entry to Template Manifest?\nCuboidNane: '" + json.cuboidName + "' CuboidId: " + json.cuboidId + "\non Server:"
+ json.serverUrl , btnArray );
La fonction displayConfirmDialog_Dynamic est la suivante:
//Confirmation dialog Dynamic Buttons
function displayConfirmDialog_Dynamic(dlgTitle, message, btnArray)
{
var retVal;
$("div#dialog-confirm").find("p").html(message);
var confirmDlg = $( "#dialog-confirm" ).dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
title: dlgTitle,
buttons: btnArray,
show:{effect:'scale', duration: 700},
hide:{effect:'explode', duration: 700}
});
confirmDlg.dialog('option', 'buttons', btnArray);
confirmDlg.prev(".ui-dialog-titlebar").css({"background":"#ffc000", "color":"#ffffff", "font-size":"13px", "font-weight":"normal"}) ;
confirmDlg.dialog("open");
}
Le modèle de dialogue de confirmation est défini comme balise DIV comme suit. Notez que la variable title
et le contenu de la balise <p>
sont modifiés dynamiquement par le code JavaScript.
<div id="dialog-confirm" title="Empty the recycle bin?" style="display:none;">
<p>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
La capture d'écran de la boîte de dialogue affichée par le code ci-dessus est présentée ci-dessous:
Et n'oublie pas
$($("button", $(".info_dialog").parent())[1]).html("<span class='ui-button-text'>Button text here.</span>");
Cela fonctionnera $($("button", $("#dialogId").parent())[NUMBER_OF_YOUR_BUTTON]).text("My Text");
var buttonName = "something";
$('#button-id').attr('value', buttonName);
pourquoi pas un one liner ...
$("span.ui-button-text:contains('OLD BUTTON NAME')").html('NEW BUTTON NAME');
assigner une classe au bouton. Le texte du bouton sera dans une étendue avec une classe appelée ui-button-text
à l'intérieur de votre classe définie . Donc, si vous donnez à votre bouton la classe .contacts-dialog-search-button
, le code permettant d'accéder au texte sera:
$('.ui-button-text','.contacts-dialog-search-button').text();
voici le code que j'utilise pour les boutons de mes projets actuels, pour vous donner un exemple.
buttons : [
{
text : 'Advanced Search',
click : function(){
if($(this).dialog("option", "width")==290){
$('#contacts-dialog-search').show();
$(this).dialog("option", "width", 580);
$('.ui-button-text','.contacts-dialog-search-button').text('Close Search');
}
else{
$('#contacts-dialog-search').hide();
$(this).dialog("option", "width", 290);
$('.ui-button-text','.contacts-dialog-search-button').text('Advanced Search');
}
},
"class" : "contacts-dialog-search-button"
}
]
Oui tout à fait possible avec le comportement en ligne:
function ConfirmDialog() {
var yesButtonName = "Yes";
var noButtonName = "No";
this.showMessage = function(message, callback, argument) {
var $dialog = $('<div></div>')
.html(message)
.dialog({
modal: true,
closeOnEscape: true,
buttons: [
{
text:yesButtonName,
click: function() {
if (callback && typeof(callback) === "function") {
if (argument == 'undefined') {
callback();
} else {
callback(argument);
}
} else {
$(this).dialog("close");
}
}
},
{
text:noButtonName,
click: function() {
$(this).dialog("close");
}
}
]
});
$dialog.dialog("open");
};
this.setYesButtonName = function(name) {
yesButtonName = name;
return this;
};
this.setNoButtonName = function(name) {
noButtonName = name;
return this;
};
}
Créer un objet de la classe ConfirmDialog.
this.CONFIRM_DIALOG = new ConfirmDialog();
Appelez la méthode sur n'importe quel événement, disons onclick ()
OK_DIALOG.setYesButtonName('Wana Marry').showMessage('Worst Idea!!');
Travail accompli!!