Comment changer le texte d'un bouton dans jQuery?

548

Comment modifiez-vous la valeur de texte d'un bouton dans jQuery? Actuellement, mon bouton a «Ajouter» comme valeur de texte, et après avoir été cliqué, je veux qu'il devienne «Enregistrer». J'ai essayé cette méthode ci-dessous, mais jusqu'à présent sans succès:

$("#btnAddProfile").attr('value', 'Save');
user517406
la source
3
en fait, votre exemple devrait fonctionner pour changer la valeur du bouton. Je l'ai essayé et cela a fonctionné. Peut-être que l'ID du bouton est différent ou une faute de frappe.
mjspier
Ne fonctionne toujours pas ... les styles d'interface utilisateur JQuery pourraient-ils être à l'origine de cela?
user517406
4
La réponse de Sergey était la meilleure. il fonctionne correctement sur les boutons jquery sans supprimer ses styles, son rembourrage et ses marges.
AaA
utilisez ce $ ("# btnAddProfile"). prop ('value', 'Save');
Développeur Php

Réponses:

899

Dépend du type de bouton que vous utilisez

<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');

Votre bouton peut également être un lien. Vous devrez publier du HTML pour une réponse plus spécifique.

EDIT : Cela fonctionnera en supposant que vous l'avez enveloppé dans un .click()appel, bien sûr

EDIT 2 : les versions plus récentes de jQuery (à partir de> 1.6) utilisent .propplutôt que.attr

EDIT 3 : Si vous utilisez l'interface utilisateur jQuery, vous devez utiliser la méthode de DaveUK ( ci-dessous ) pour ajuster la propriété text

JohnP
la source
7
Je l'ai fait fonctionner en utilisant .html ('Save'), je n'ai pas remarqué que j'avais mis runat = server sur mon bouton, c'est ce qui causait le problème.
user517406
Est-ce que je peux faire en sorte que cela fonctionne et que ça ne rétrécisse pas mon bouton jquery ui?
Sevenearths
2
ne t'en fais pas. J'ai changé de buttonà inputet changé les icônes rondes au lieu de jouer avec le texte. (Je suppose que quelque chose n'était pas censé être)
Sevenearths
8
Je voterais contre si je pouvais, car cela gâche le style dans certains cas. Veuillez utiliser la réponse de DaveUK, si vous rencontrez des problèmes avec celui-ci . PS: je suppose que c'est aussi ce que Sevenearths a remarqué
user562529
3
Encore mieux: utilisez la réponse de Sergey ci-dessous pour une bonne utilisation de jQuery et de la pérennité: $ (".selector") .button ("option", "label", "new text");
cincodenada
148

Pour les boutons créés avec .Button () dans jQuery ........

Alors que les autres réponses changeront le texte, elles perturberont le style du bouton, il s'avère que lorsqu'un bouton jQuery est rendu, le texte du bouton est imbriqué dans une plage, par exemple

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

Si vous supprimez la plage et la remplacez par du texte (comme dans les autres exemples), vous perdrez la plage et la mise en forme associée.

Vous devez donc réellement changer le texte dans la balise SPAN et NON PAS LE BOUTON!

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

ou (si comme moi, cela se fait sur un événement de clic)

$("span", this).text("My NEW Text");
DaveUK
la source
4
Vous ne devriez pas vous attendre à ce que cette structure DOM ne change jamais. Il vaut mieux utiliser la méthode que jQuery-UI vous donne pour changer l'étiquette (voir la réponse de Sergey).
Mike DeSimone
80

La bonne façon de changer le texte du bouton s'il a été "boutonné" à l'aide de JQuery est d'utiliser la méthode .button ():

$( ".selector" ).button( "option", "label", "new text" );
Sergey
la source
3
Cela a fonctionné pour moi mieux que les autres approches, qui ont piétiné le style du bouton (en particulier la taille du bouton). J'utilisais un bouton dans une boîte de dialogue d'interface utilisateur jQuery, FWIW.
Dave Crumbacher
8
C'est la bonne réponse pour les boutons créés avec jQuery, tels que ceux d'une boîte de dialogue. Tous les autres détruiront une partie du style jQuery. Cela le fait également sans dépendre de la structure HTML générée par jQuery, qui est plus évolutive.
cincodenada
C'est la bonne réponse à cette question (il semble que la question concerne les boutons de l'interface utilisateur Jquery, voir les commentaires), elle devrait être promue.
peveuve
38

Pour modifier le texte d'un bouton, exécutez simplement la ligne suivante de jQuery pour

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

utilisation

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

tandis que pour

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

utilisez ceci

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

Sangeet Menon
la source
De plus, pour les boutons créés par jquery en utilisant par exemple $('#thing').append($("<button />")....), vous devez utiliser .html pour définir le texte.
Benubird
22

Tu as besoin de faire .button("refresh")

HTML :

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

JS :

$('#btnviewdetails').text('Save').button("refresh");
user1464277
la source
Pour une raison quelconque, cela ne fonctionnerait pour moi qu'après avoir utilisé votre code pour actualiser le bouton, mais j'ai également remarqué que l'icône sur le bouton (qui fait partie de JQuery Mobile CSS) se perd après l'actualisation (bien que votre solution soit la plus proche) J'ai eu).
Ciaran Gallagher
12

Si vous avez appuyé sur votre bouton, cela semble fonctionner:

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

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

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

i_emmanuel
la source
10

Vous pouvez utiliser quelque chose comme ceci:

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

Vous pouvez également ajouter des propriétés supplémentaires comme celle-ci:

$(this).text('New Value').attr('disabled', true).addClass('bt-hud').unbind('click');
PurplePier
la source
Ne fonctionne pas avec les boutons d'entrée ou les boutons d'
ActiveX
8

Vous pouvez utiliser

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

bien que

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

fonctionnerait aussi, mais c'est trompeur (cela donne l'impression que vous pourriez écrire quelque chose comme

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

mais bien sûr vous ne pouvez pas

gotofritz
la source
6
document.getElementById('btnAddProfile').value='Save';
Curtisk
la source
5
$("#btnAddProfile").click(function(){
    $("#btnAddProfile").attr('value', 'Save');
 });
sauerburger
la source
10
Répéter le code non fonctionnel de la question n'est pas une réponse.
Benubird
4

c'est du travail pour moi html:

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

js

$("#btnSaveSchedule").text("new value");
Loup gris
la source
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>

Sudheer Kopparapu
la source
2

Avez-vous donné à votre bouton une classe au lieu d'un identifiant? essayez le code suivant

$(".btnSave").attr('value', 'Save');
Nicholas Murray
la source
1
$("#btnviewdetails").click(function(){
    if($(this).val()!="hide details"){
        $("#detailedoutput").show();
        $(this).val('hide details');
    }else{
        $("#detailedoutput").hide();
        $(this).val('view more details');
    }

});
Feng
la source
Incluez quelques détails sur votre réponse.
Starx
veuillez inclure des détails avec votre réponse. Je n'ai aucune idée de ce que vous essayez de faire ici.
Anurag
1

Cela devrait faire l'affaire:

$("#btnAddProfile").prop('value', 'Save');       
$("#btnAddProfile").button('refresh');
Olle Klang
la source
1
$("#btnAddProfile").html('Save').button('refresh');
Drastick
la source
0

c'est exactement correct, cela fonctionne pour moi;

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

êtes-vous sûr que Jquery est disponible et que votre code est au bon endroit?

John Beynon
la source
0
    $( "#btnAddProfile" ).on( "click",function(event){
    $( event.target ).html( "Save" );
});
Rajesh M. Kanojia
la source
0

Modification du nom de l'étiquette du bouton en C #.

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

btnUpdate.**InnerText** = "Update";
iizquierdo
la source