Как изменить текст кнопки в jQuery?

361

Как изменить текстовое значение кнопки в jQuery? В настоящее время моя кнопка имеет "Добавить" в качестве ее текстового значения, и после нажатия на нее я хочу, чтобы она изменилась на "Сохранить". Я пробовал этот метод ниже, но до сих пор без успеха:

$("#btnAddProfile").attr('value', 'Save');
  • 3
    на самом деле ваш пример должен работать, чтобы изменить значение кнопки. Я попробовал это, и это сработало. Может быть, идентификатор кнопки отличается или опечатка.
  • 0
    Все еще не работает ... могут ли стили JQuery UI вызывать это?
Показать ещё 4 комментария
Теги:

20 ответов

621
Лучший ответ

Зависит от того, какую кнопку вы используете

<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-код для более конкретного ответа.

EDIT: они будут работать, если вы завернули его в вызов .click(), конечно

EDIT 2: более новые версии jQuery (от версии > 1.6) используют .prop, а не .attr

РЕДАКТИРОВАТЬ 3. Если вы используете пользовательский интерфейс jQuery, вам нужно использовать метод DaveUK (ниже) для настройки свойства text

  • 6
    Получил работу с использованием .html («Сохранить»), я не заметил, что я установил runat = server на своей кнопке, именно это и стало причиной проблемы.
  • 0
    В любом случае я могу заставить это работать, и это не сжимает мою кнопку пользовательского интерфейса jquery?
Показать ещё 10 комментариев
115

Для кнопок, созданных с помощью .Button() в jQuery........

В то время как другие ответы изменят текст, они испортят стиль кнопки, оказывается, что при нажатии кнопки 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");
  • 3
    Вы не должны ожидать, что эта структура DOM никогда не изменится. Гораздо лучше использовать метод, который jQuery-UI дает вам для изменения метки (см. Ответ Сергея).
73

Правильный способ изменения текста кнопки, если он был "застегнут" с помощью JQuery, - это использовать метод .button():

$( ".selector" ).button( "option", "label", "new text" );
  • 3
    Это сработало для меня лучше, чем другие подходы, которые давили на стиль кнопки (в частности, размер кнопки). Я использовал кнопку в диалоговом окне jQuery UI, FWIW.
  • 8
    Это правильный ответ для кнопок, созданных с помощью jQuery, таких как кнопки в диалоговом окне. Все остальные будут разрушать некоторые стили JQuery. Это также делает это независимо от HTML-структуры, которую генерирует jQuery, что в большей степени ориентировано на будущее.
Показать ещё 1 комментарий
32

Используйте .val()

Здесь ссылка на JSfiddle

22

Чтобы изменить текст на кнопке, просто выполните следующую строку jQuery для

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

использование

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

а для

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

используйте этот

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

  • 0
    val(..) сделал трюк для моего ввода type = 'button'. Спасибо!
  • 0
    Кроме того, для кнопок, созданных jquery с использованием, например, $('#thing').append($("<button />")....) , вам нужно использовать .html для установки текста.
Показать ещё 1 комментарий
16

Вам нужно сделать .button("refresh")

HTML:

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

JS:

$('#btnviewdetails').text('Save').button("refresh");
  • 0
    По какой-то причине, это сработало бы только для меня после того, как я использовал ваш код для обновления кнопки, но я также заметил, что значок на кнопке (часть JQuery Mobile CSS) теряется после ее обновления (хотя ваше решение было самым близким Я получил).
10

Если у вас есть кнопка с кнопкой, это, похоже, работает:

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

$('#button').button();//make it nice
var text="new caption";
$('#button').children().first().html(text);
  • 1
    Для кнопок jQueryUI это все ...
5
document.getElementById('btnAddProfile').value='Save';
  • 1
    Это не JQuery.
5
$("#btnAddProfile").click(function(){
    $("#btnAddProfile").attr('value', 'Save');
 });
  • 10
    Повторение нерабочего кода из вопроса не является ответом.
4

Вы можете использовать что-то вроде этого:

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

Вы также можете добавить дополнительные свойства:

$(this).text('New Value').attr('disabled', true).addClass('bt-hud').unbind('click');
  • 0
    Не работают кнопки ввода или отправки, используйте val ()
4

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

3

он работает для меня HTML:

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

JS

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

Вы можете использовать

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

хотя

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

будет работать, но он вводит в заблуждение (создается впечатление, что вы могли бы написать что-то вроде

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

но, конечно, вы не можете

2

Вы дали своей кнопке класс вместо id? попробуйте следующий код

$(".btnSave").attr('value', 'Save');
1
$("#btnAddProfile").html('Save').button('refresh');
1

Это должно сделать трюк:

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

$(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="/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>
0
    $( "#btnAddProfile" ).on( "click",function(event){
    $( event.target ).html( "Save" );
});
0
$("#btnviewdetails").click(function(){
    if($(this).val()!="hide details"){
        $("#detailedoutput").show();
        $(this).val('hide details');
    }else{
        $("#detailedoutput").hide();
        $(this).val('view more details');
    }

});
  • 0
    Включите некоторые детали о вашем ответе.
  • 0
    Пожалуйста, включите детали в ваш ответ. Я понятия не имею, что вы пытаетесь сделать здесь.
0

что точно верно, это работает для меня;

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

Вы уверены, что JQuery доступен и что ваш код находится в правильном месте?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню