val () so với text () cho textarea


106

Tôi đang sử dụng jQuery và tự hỏi liệu tôi có nên sử dụng val () hay text () (hoặc một phương thức khác) để đọc và cập nhật nội dung của một vùng văn bản hay không.

Tôi đã thử cả hai và tôi gặp vấn đề với cả hai. Khi tôi sử dụng text () để cập nhật vùng văn bản, dấu ngắt dòng (\ n) không hoạt động. Khi tôi sử dụng val () để truy xuất nội dung textarea, văn bản sẽ bị cắt bớt nếu nó quá dài.


nó có nghĩa là gì ngắt dòng không hoạt động?
kaz

@kaz: văn bản vẫn nằm trên cùng một dòng.
Christophe

Và bạn có nghĩa là gì khi "văn bản bị cắt ngắn" - trong đầu ra gỡ lỗi của bảng điều khiển? Trong giá trị trả về chính nó? Sẽ dễ dàng hơn nếu bạn cung cấp jsfiddle ...
Constantin Groß

@Connum: trong giá trị trả về. Cố gắng jsfiddle ngay bây giờ ...
Christophe

1
Tôi đến đây bằng cách google'ing cho văn bản textarea bị cắt ngắn. Tôi đã khắc phục sự cố của mình bằng cách thêm một vài \ n \ n vào cuối .val (). Kỳ lạ nhưng nó đã hoạt động.
Darin,

Câu trả lời:


148

Cách tốt nhất để đặt / lấy giá trị của một vùng văn bản là .val(),.value phương pháp.

.text()nội bộ sử dụng phương thức .textContent(hoặc .innerTextcho IE) để lấy nội dung của a <textarea>. Các trường hợp kiểm thử sau đây minh họa cách thức text().val()mối liên hệ với nhau:

var t = '<textarea>';
console.log($(t).text('test').val());             // Prints test
console.log($(t).val('too').text('test').val());  // Prints too
console.log($(t).val('too').text());              // Prints nothing
console.log($(t).text('test').val('too').val());  // Prints too

console.log($(t).text('test').val('too').text()); // Prints test

Các value bất động sản , được sử dụng bởi .val()luôn cho thấy giá trị có thể nhìn thấy hiện tại, trong khi text()'s giá trị trả về có thể là sai lầm.


thx, thử cái này ngay bây giờ. Tôi hiện không thể tái tạo sự cố mà tôi gặp phải với val () và sự cắt ngắn. Có lẽ tôi đã nhầm người bị nghi ngờ ...
Christophe

5
Cảm ơn rất nhiều vì các ví dụ. Rõ ràng đó là vấn đề của tôi, tôi đã viết bằng text () và đọc bằng val ().
Christophe

Thay đổi giá trị của một textarea sử dụng text()không làm việc nữa sau khi tự thay đổi bất cứ điều gì trong đó (ví dụ như thêm một ký tự)
Jan

12

.val() luôn làm việc với textarea các phần tử.

.text()hoạt động đôi khi và thất bại lần khác! Nó không đáng tin cậy (được thử nghiệm trong Chrome 33)

Điều tốt nhất là nó .val()hoạt động liền mạch với các phần tử biểu mẫu khác (như input) trong khi .text()không thành công.

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.