Come modificare il testo di un pulsante in jQuery?


548

Come si modifica il valore del testo di un pulsante in jQuery? Attualmente, il mio pulsante ha "Aggiungi" come valore di testo e, dopo essere stato cliccato, voglio che cambi in "Salva". Ho provato questo metodo di seguito, ma finora senza successo:

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

3
in realtà il tuo esempio dovrebbe funzionare per cambiare il valore del pulsante. L'ho provato e ha funzionato. Forse l'id del pulsante è diverso o un errore di battitura.
mjspier,

Non funziona ancora ... gli stili dell'interfaccia utente di JQuery potrebbero causare questo?
user517406

4
La risposta di Sergey era la migliore. funziona correttamente sui pulsanti jquery senza rimuovere i suoi stili, imbottitura e margini.
AaA

usa questo $ ("# btnAddProfile"). prop ('value', 'Save');
Sviluppatore Php il

Risposte:


899

Dipende dal tipo di pulsante che stai utilizzando

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

Il tuo pulsante potrebbe anche essere un link. Dovrai pubblicare del codice HTML per una risposta più specifica.

EDIT : Funzioneranno supponendo che tu l'abbia avvolto in una .click()chiamata, ovviamente

EDIT 2 : Le versioni jQuery più recenti (da> 1.6) usano .propinvece di.attr

MODIFICA 3 : se si utilizza l'interfaccia utente di jQuery, è necessario utilizzare il metodo DaveUK (di seguito ) per regolare la proprietà del testo


7
Ha funzionato usando .html ('Salva'), non ho notato che avevo impostato runat = server sul mio pulsante, questo è ciò che stava causando il problema.
user517406

In qualche modo riesco a farlo funzionare e non si restringe il mio pulsante UI jquery?
Sevenearths,

2
non ti preoccupare. Ho cambiato da buttona inpute ho cambiato le icone rotonde invece di scherzare con il testo. (Suppongo che qualcosa non doveva essere)
Sevenearths,

8
Voterei questo voto se potessi, poiché in alcuni casi rovina lo stile. Si prega di utilizzare la risposta di DaveUK, se si hanno problemi con questo . PS: Suppongo sia quello che ha notato anche
Sevenearths

3
Ancora meglio: usa la risposta di Sergey di seguito per un uso corretto di jQuery e delle soluzioni future: $ (".selector") .button ("opzione", "etichetta", "nuovo testo");
Cincodenada,

148

Per i pulsanti creati con .Button () in jQuery ........

Mentre le altre risposte cambieranno il testo, confonderanno lo stile del pulsante, si scopre che quando viene reso un pulsante jQuery il testo del pulsante viene annidato in un arco, ad es.

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

Se rimuovi l'intervallo e lo sostituisci con il testo (come negli altri esempi), perderai l'intervallo e la formattazione associata.

Quindi in realtà devi cambiare il testo all'interno del tag SPAN e NON il PULSANTE!

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

o (se come me è stato fatto su un evento click)

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

4
Non dovresti aspettarti che questa struttura DOM non cambi mai. Molto meglio è usare il metodo che jQuery-UI ti dà per cambiare l'etichetta (vedi la risposta di Sergey).
Mike DeSimone,

80

Il modo corretto di modificare il testo del pulsante se è stato "abbottonato" utilizzando JQuery è utilizzare il metodo .button ():

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

3
Questo ha funzionato per me meglio degli altri approcci, che hanno calpestato lo stile del pulsante (in particolare la dimensione del pulsante). Stavo usando un pulsante in una finestra di dialogo dell'interfaccia utente di jQuery, FWIW.
Dave Crumbacher,

8
Questa è la risposta corretta per i pulsanti creati con jQuery, come quelli in una finestra di dialogo. Tutti gli altri distruggeranno parte dello stile jQuery. Lo fa anche senza dipendere dalla struttura HTML generata da jQuery, che è più a prova di futuro.
Cincodenada,

Questa è la risposta giusta a questa domanda (sembra che la domanda riguardi i pulsanti dell'interfaccia utente di Jquery, vedi commenti), dovrebbe essere promossa.
Peveuve,

38

Per modificare il testo in un pulsante, è sufficiente eseguire la seguente riga di jQuery per

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

uso

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

mentre per

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

Usa questo

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


Inoltre, per i pulsanti creati da jquery usando ad esempio $('#thing').append($("<button />")....), è necessario utilizzare .html per impostare il testo.
Benubird,


22

Devi fare .button("refresh")

HTML :

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

JS :

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

Per qualche motivo, funzionerebbe solo per me dopo aver usato il tuo codice per aggiornare il pulsante, ma ho anche notato che l'icona sul pulsante (parte di JQuery Mobile CSS) si perde dopo averlo aggiornato (sebbene la tua soluzione fosse la più vicina Ho ottenuto).
Ciaran Gallagher,

12

Se hai abbottonato il tuo pulsante, questo sembra funzionare:

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

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


10

Puoi usare qualcosa del genere:

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

Puoi anche aggiungere proprietà extra come questa:

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

Non funziona i pulsanti di input o i pulsanti di invio, usa val ()
ActiveX

8

Puoi usare

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

sebbene

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

funzionerebbe anche, ma è fuorviante (dà l'impressione di poter scrivere qualcosa del genere

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

ma ovviamente non puoi


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

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

10
Ripetere il codice non funzionante dalla domanda non è una risposta.
Benubird,

4

funziona per me 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

Hai dato al tuo pulsante una classe anziché un ID? prova il seguente codice

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

});

Includi alcuni dettagli sulla tua risposta.
Starx,

si prega di includere i dettagli con la risposta. Non ho idea di cosa stai cercando di fare qui.
Anurag,

1

Questo dovrebbe fare il trucco:

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


0

è esattamente corretto, questo funziona per me;

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

sei sicuro che Jquery sia disponibile e che il tuo codice sia nel posto giusto?


0
    $( "#btnAddProfile" ).on( "click",function(event){
    $( event.target ).html( "Save" );
});

0

Modifica del nome dell'etichetta del pulsante in C #.

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

btnUpdate.**InnerText** = "Update";
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.