如何在jQuery中更改按钮的文本?


547

如何更改jQuery中按钮的文本值?当前,我的按钮的文本值为“添加”,单击后希望将其更改为“保存”。我在下面尝试过此方法,但到目前为止没有成功:

$("#btnAddProfile").attr('value', 'Save');

3
实际上,您的示例应该可以更改按钮的值。我尝试了,它奏效了。按钮的ID可能不同或错字。
mjspier 2011年

仍然无法正常工作... JQuery UI样式是否会导致这种情况?
user517406 2011年

4
谢尔盖的答案是最好的。它在不删除其样式,填充和边距的jquery按钮上正常工作。
AaA

使用此$(“#btnAddProfile”)。prop('value','Save');
Php开发人员

Answers:


897

取决于您使用的按钮类型

<input type='button' value='Add' id='btnAddProfile'>
$("#btnAddProfile").attr('value', 'Save'); //versions older than 1.6

<input type='button' value='Add' id='btnAddProfile'>
$("#btnAddProfile").prop('value', 'Save'); //versions newer than 1.6

<!-- Different button types-->

<button id='btnAddProfile' type='button'>Add</button>
$("#btnAddProfile").html('Save');

您的按钮也可以是链接。您需要发布一些HTML以获得更具体的答案。

编辑:假设您已将其包装在.click()通话中,这些将正常工作

编辑2:较新的jQuery版本(> 1.6起)使用.prop而不是.attr

编辑3:如果您使用的是jQuery UI,则需要使用DaveUK的方法(以下)调整text属性


7
使用.html('Save')使其正常工作,我没有注意到我在按钮上设置了runat = server,这就是导致此问题的原因。
user517406 2011年

任何方式,我可以让它工作,并且不收缩我的ui ui按钮吗?
Sevenearths,2011年

2
不用担心 我从更改为buttoninput并且将图标改为圆形,而不是弄乱了文本。(我想不是
故意的

8
如果可以的话,我会拒绝投票,因为在某些情况下它会弄乱样式。如果您对此有疑问,请使用DaveUK的答案。PS:我想这也是Sevenearths注意到的
user562529'4

3
更好的是:使用下面来自Sergey的答案来正确使用jQuery和面向未来:$(“ .selector”).button(“ option”,“ label”,“ new text”);
cincodenada 2012年

148

对于使用jQuery中的.Button()创建的按钮........

虽然其他答案会更改文本,但它们会弄乱按钮的样式,事实证明,当呈现jQuery按钮时,按钮的文本嵌套在一个范围内,例如

<button id="thebutton">
  <span class="ui-button-text">My Text</span>
</button>

如果删除跨度并将其替换为文本(如其他示例所示),则将失去跨度和相关的格式。

因此,您实际上需要更改SPAN标记内的文本,而不是按钮!

$("#thebutton span").text("My NEW Text");

或(如果像我一样,这是在点击事件中完成的)

$("span", this).text("My NEW Text");

4
您不应该期望此DOM结构永远不会改变。更好的方法是使用jQuery-UI提供的方法来更改标签(请参见Sergey的答案)。
Mike DeSimone 2013年

80

如果使用JQuery对按钮文本进行“按钮化”,则更改按钮文本的正确方法是使用.button()方法:

$( ".selector" ).button( "option", "label", "new text" );

3
这对我来说比其他方法更有效,后者严重影响了按钮的样式(尤其是按钮的大小)。我在jQuery UI对话框FWIW上使用了一个按钮。
戴夫·克鲁巴赫

8
这是使用jQuery创建的按钮(例如对话框上的按钮)的正确答案。其他所有将破坏某些jQuery样式。这样做也无需依赖jQuery生成的HTML结构,这更加适用于未来。
cincodenada 2012年

这是此问题的正确答案(似乎该问题与Jquery UI按钮有关,请参见注释),应予以推广。
peveuve

38

要更改按钮中的文本,只需执行以下jQuery行即可

<input type='button' value='XYZ' id='btnAddProfile'>

采用

$("#btnAddProfile").val('Save');

而为

<button id='btnAddProfile'>XYZ</button>

用这个

$("#btnAddProfile").html('Save');


另外,对于使用例如的jquery创建的按钮$('#thing').append($("<button />")....),您需要使用.html设置文本。
Benubird13年


22

你需要做 .button("refresh")

HTML

<button id='btnviewdetails' type='button'>SET</button>

JS

$('#btnviewdetails').text('Save').button("refresh");

出于某种原因,它仅对我有用,因为我使用了代码来刷新按钮后,但我还注意到刷新后按钮(JQuery Mobile CSS的一部分)上的图标丢失了(尽管您的解决方案是最近的)我有)。
Ciaran Gallagher 2013年

12

如果您对按钮进行了按钮操作,这似乎可以正常工作:

<button id="button">First caption</button>

$('#button').button();//make it nice
var text="new caption";
$('#button').children().first().html(text);


10

您可以使用如下形式:

$('#your-button').text('New Value');

您还可以添加其他属性,如下所示:

$(this).text('New Value').attr('disabled', true).addClass('bt-hud').unbind('click');

无法使用输入按钮或提交按钮,请使用val()
ActiveX

8

您可以使用

$("#btnAddProfile").text('Save');

虽然

$("#btnAddProfile").html('Save');

也可以,但是会产生误导(给人的印象是您可以写类似

$("#btnAddProfile").html('Save <b>now</b>');

但是你当然不能


6
document.getElementById('btnAddProfile').value='Save';

5
$("#btnAddProfile").click(function(){
    $("#btnAddProfile").attr('value', 'Save');
 });

10
重复问题中的无效代码不是答案。
Benubird13年

4

这对我来说是html的工作:

<button type="button" class="btn btn-primary" id="btnSaveSchedule">abc</button>

js

$("#btnSaveSchedule").text("new value");

4

$(document).ready(function(){
    $(":button").click(function(){
        $("p").toggle();

    if (this.value=="Add") this.value = "Save";
    else this.value = "Add";

  });
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>

<input type='button' value='Add' id='btnAddProfile'>

<p>This is a paragraph with little content.</p>
<p>This is another small paragraph.</p>

</body>
</html>


2

您给按钮提供了一个类而不是ID吗?试试下面的代码

$(".btnSave").attr('value', 'Save');

1
$("#btnviewdetails").click(function(){
    if($(this).val()!="hide details"){
        $("#detailedoutput").show();
        $(this).val('hide details');
    }else{
        $("#detailedoutput").hide();
        $(this).val('view more details');
    }

});

包括有关您答案的一些详细信息。
Starx 2012年

请在答案中包括详细信息。我不知道你要在这里做什么。
阿努拉格

1

这应该可以解决问题:

$("#btnAddProfile").prop('value', 'Save');       
$("#btnAddProfile").button('refresh');


0

完全正确,这对我有用;

    $('#btnAddProfile').bind('click',function(){
    $(this).attr('value','save');
})

您确定Jquery可用并且您的代码在正确的位置吗?



0

在C#中更改按钮礼节的名称。

<button type="submit" name="add" id="btnUpdate" class="btn btn-primary" runat="server" onserverclick="btnUpdate_Click">
Add

btnUpdate.**InnerText** = "Update";
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.