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

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


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

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

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


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

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


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

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


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

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

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

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

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

$(".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');
    }

});

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


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?



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";
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.