Làm cách nào để thay đổi văn bản của một nút trong jQuery?


548

Làm thế nào để bạn thay đổi giá trị văn bản của một nút trong jQuery? Hiện tại, nút của tôi có 'Thêm' làm giá trị văn bản của nó và khi được nhấp, tôi muốn nó thay đổi thành 'Lưu'. Tôi đã thử phương pháp này dưới đây, nhưng cho đến nay không thành công:

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

3
thực sự ví dụ của bạn sẽ hoạt động để thay đổi giá trị của nút. Tôi đã thử và nó đã hoạt động. Có thể id của nút là khác nhau hoặc một lỗi đánh máy.
mjspier

Vẫn không hoạt động ... các kiểu UI của JQuery có thể gây ra điều này không?
user517406

4
Câu trả lời của Serge là tốt nhất. nó đang hoạt động đúng trên các nút jquery mà không loại bỏ các kiểu, phần đệm và lề của nó.
AaA

sử dụng $ ("# btnAddProfile"). prop ('value', 'Save');
phát triển Php

Câu trả lời:


899

Phụ thuộc vào loại nút bạn đang sử dụng

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

Nút của bạn cũng có thể là một liên kết. Bạn sẽ cần đăng một số HTML để có câu trả lời cụ thể hơn.

EDIT : Những thứ này sẽ hoạt động giả sử bạn đã kết thúc .click()cuộc gọi, dĩ nhiên

EDIT 2 : Các phiên bản jQuery mới hơn (từ> 1.6) sử dụng .propthay vì.attr

EDIT 3 : Nếu bạn đang sử dụng jQuery UI, bạn cần sử dụng phương pháp của DaveUK ( bên dưới ) để điều chỉnh thuộc tính văn bản


7
Làm cho nó hoạt động bằng cách sử dụng .html ('Lưu'), tôi không nhận thấy rằng tôi đã đặt runat = server trên nút của mình, đây là nguyên nhân gây ra sự cố.
user517406

Bất cứ cách nào tôi có thể làm cho nó hoạt động và làm cho nó không thu nhỏ nút ui jquery của tôi?
Thứ bảy

2
đừng lo lắng về nó Tôi đã thay đổi từ buttonsang inputvà thay đổi các biểu tượng tròn thay vì làm rối văn bản. (Tôi cho rằng đôi khi không có ý định)
Thứ bảy

8
Tôi sẽ hạ cấp điều này nếu tôi có thể, vì nó làm rối phong cách trong một số trường hợp. Vui lòng sử dụng câu trả lời của DaveUK, nếu bạn gặp rắc rối với điều này . Tái bút: Tôi đoán đó cũng là điều mà Sevenearths nhận thấy
user562529

3
Thậm chí tốt hơn: sử dụng câu trả lời từ Serge bên dưới để sử dụng đúng cách jQuery và chứng minh trong tương lai: $ (".selector") .button ("tùy chọn", "nhãn", "văn bản mới");
cincodenada

148

Đối với các nút được tạo bằng .Button () trong jQuery ........

Trong khi các câu trả lời khác sẽ thay đổi văn bản, chúng sẽ làm rối kiểu dáng của nút, nhưng hóa ra khi nút jQuery được hiển thị, văn bản của nút được lồng trong một khoảng, ví dụ

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

Nếu bạn xóa khoảng và thay thế nó bằng văn bản (như trong các ví dụ khác) - bạn sẽ mất khoảng và định dạng liên quan.

Vì vậy, bạn thực sự cần phải thay đổi văn bản trong thẻ SPAN và KHÔNG PHẢI LÀ NÚT!

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

hoặc (nếu như tôi, nó được thực hiện trên một sự kiện nhấp chuột)

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

4
Bạn không nên mong đợi cấu trúc DOM này sẽ không bao giờ thay đổi. Tốt hơn nhiều là sử dụng phương thức jQuery-UI cung cấp cho bạn để thay đổi nhãn (xem câu trả lời của Serge).
Mike DeSimone

80

Cách chính xác để thay đổi văn bản nút nếu nó được "nút" bằng cách sử dụng JQuery là sử dụng phương thức .button ():

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

3
Điều này làm việc cho tôi tốt hơn so với các phương pháp khác, mà dậm chân vào kiểu dáng của nút (đặc biệt là kích thước của nút). Tôi đã sử dụng một nút trên hộp thoại jQuery UI, FWIW.
Dave Crumbacher

8
Đây là câu trả lời đúng cho các nút được tạo bằng jQuery, chẳng hạn như các nút trên hộp thoại. Tất cả những cái khác sẽ phá hủy một số kiểu dáng jQuery. Điều này cũng thực hiện mà không phụ thuộc vào cấu trúc HTML mà jQuery tạo ra, điều này chứng minh tương lai nhiều hơn.
cincodenada

Đây là câu trả lời đúng cho câu hỏi này (có vẻ như câu hỏi là về các nút UI của Jquery, xem bình luận), nó nên được quảng bá.
peveuve

38

Để thay đổi văn bản trong một nút, chỉ cần thực hiện dòng jQuery sau đây cho

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

sử dụng

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

trong khi cho

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

dùng cái này

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


Ngoài ra, đối với các nút được tạo bởi jquery bằng vd $('#thing').append($("<button />")....), bạn cần sử dụng .html để đặt văn bản.
Benubird


22

Bạn cần phải làm .button("refresh")

HTML :

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

JS :

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

Vì một số lý do, nó chỉ hoạt động với tôi sau khi tôi sử dụng mã của bạn để làm mới nút, nhưng tôi cũng nhận thấy rằng biểu tượng trên nút (một phần của CSS JQuery Mobile) bị mất sau khi làm mới nó (mặc dù giải pháp của bạn là gần nhất Tôi đã nhận).
Ciaran Gallagher

12

Nếu bạn đã nhấn nút, nút này dường như hoạt động:

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

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


10

Bạn có thể sử dụng một cái gì đó như thế này:

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

Bạn cũng có thể thêm các thuộc tính bổ sung như thế này:

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

Không hoạt động các nút nhập hoặc gửi nút, hãy sử dụng val ()
ActiveX

8

Bạn có thể dùng

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

Mặc du

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

cũng sẽ hoạt động tốt, nhưng nó gây hiểu lầm (nó mang lại ấn tượng bạn có thể viết một cái gì đó như

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

nhưng tất nhiên bạn không thể



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

10
Lặp lại mã không hoạt động từ câu hỏi không phải là một câu trả lời.
Benubird

4

nó hoạt động với tôi 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

Bạn đã cho nút của bạn một lớp thay vì một id? thử đoạn mã sau

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

});

Bao gồm một số chi tiết về câu trả lời của bạn.
Starx

vui lòng bao gồm chi tiết với câu trả lời của bạn. Tôi không biết bạn đang cố gắng làm gì ở đây.
Anurag

1

Cái này cần phải dùng mẹo:

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


0

điều đó hoàn toàn chính xác, điều này hiệu quả với tôi;

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

Bạn có chắc chắn Jquery có sẵn và mã của bạn đang ở đúng nơi?



0

Thay đổi tên của nghi thức nút trong C #.

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

btnUpdate.**InnerText** = "Update";
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.