有谁能告诉我如何在jQuery UI对话框中使用按钮文本的变量? 我想创建一个动态按钮名称。
答案 0 :(得分:94)
这是行不通的,因为jQuery处理按钮名称的方式(可以带或不带引号)
这将有效:
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 });
答案 1 :(得分:57)
您可以做的是在对话框中指定一个ID按钮,然后使用标准jQuery对其进行操作。
$("#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
}
});
设置按钮文字:
var newLabel = "Updated Label";
$("#btnOk").html('<span class="ui-button-text">'+ newLabel +'</span>')
答案 2 :(得分:7)
这里的问题是对话框插件没有为其按钮分配id,因此很难直接修改它们。
相反,正常初始化对话框,按其包含的文本找到按钮并添加ID。然后可以直接访问该按钮以更改文本,格式化,启用/禁用它等等。
$("#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')
答案 3 :(得分:2)
也许我错过了这一点 - 但最简单的方法是使用二传手吗?
$("#dialog_box").dialog({
buttons: {
[
text:"OK",
click: function() {
//... configure the button's function
}
]
});
$("#dialog_box").dialog("option", "buttons", { "Close": function() { $(this).dialog("close"); } });
答案 4 :(得分:2)
$(function() {
// using textbox value instead of variable
$("#dialog").dialog({
width: 400,
buttons: [
{ text: $("#buttonText0").val(), click: function() { $(this).dialog("close"); } },
{ text: $("#buttonText1").val(), click: function() { $(this).dialog("close"); } }
]
});
$("#updateButtonText").on("click", function() {
var $buttons = $("#dialog").dialog("widget").find(".ui-dialog-buttonpane button");
console.log($buttons.get());
$buttons.eq(0).button("option", "label", $("#buttonText0").val());
$buttons.eq(1).button("option", "label", $("#buttonText1").val());
// few more things that you can do with button widget
$buttons.eq(0).button("option", "icons", { primary: "ui-icon-check" });
$buttons.eq(1).button("disable");
$("#dialog").dialog("open");
});
});
&#13;
@import url("https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css");
&#13;
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<div id="dialog" title="Sample Dialog">
<p>Proceed?</p>
</div>
<p style="text-align: center;">
<input type="text" id="buttonText0" value="OK">
<input type="text" id="buttonText1" value="Cancel">
<input type="button" id="updateButtonText" value="Update Button Text">
</p>
&#13;
答案 5 :(得分:1)
这会奏效
$($("button", $("#dialogId").parent())[NUMBER_OF_YOUR_BUTTON]).text("My Text");
答案 6 :(得分:1)
不要忘记
$($("button", $(".info_dialog").parent())[1]).html("<span class='ui-button-text'>Button text here.</span>");
答案 7 :(得分:1)
这可以通过以下步骤完成:
以下示例解释了上述步骤。
var btnArray = [ { text: "Add Entry", click: function(){ this.retVal = true; addRowIntoTemplateManifest(); $(this).dialog('close'); } }, { text: "Cancel", click: function(){ this.retVal = false; $(this).dialog('close'); } } ];
写入自定义函数displayConfirmDialog_Dynamic(),其中包含对话框,对话框文本,按钮数组。对此功能的调用如下:
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 );
函数displayConfirmDialog_Dynamic如下:
//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");
}
确认对话框模板定义为DIV标记,如下所示。请注意,title
和<p>
标记的内容会被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>
上面代码显示的屏幕截图对话框如下所示:
答案 8 :(得分:0)
var buttonName = "something";
$('#button-id').attr('value', buttonName);
答案 9 :(得分:0)
为按钮分配一个类。按钮文本将在您定义的类中包含名为ui-button-text
的类的范围内。
因此,如果您为按钮提供类.contacts-dialog-search-button
,则访问该文本的代码将为:
$('.ui-button-text','.contacts-dialog-search-button').text();
这是我用于当前项目按钮的代码,给你一个例子。
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"
}
]
答案 10 :(得分:0)
使用内联行为完全可以:
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;
};
}
创建ConfirmDialog类的对象。
this.CONFIRM_DIALOG = new ConfirmDialog();
对任何事件调用方法,比方说onclick()
OK_DIALOG.setYesButtonName('Wana Marry').showMessage('Worst Idea!!');
工作完成!!
答案 11 :(得分:0)
为什么不是一个班轮...
$("span.ui-button-text:contains('OLD BUTTON NAME')").html('NEW BUTTON NAME');