2012-01-13 28 views
95

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

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

+0

Bạn đã thử html() chưa? – Znarkus

+0

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

+0

@Znarkus: no ... – Christophe

Trả lời

133

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

.text() sử dụng nội bộ phương pháp .textContent (hoặc .innerText cho IE) để nhận nội dung của <textarea>. Các trường hợp kiểm tra sau đây minh họa cách text().val() liên quan đến 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 valuetài sản, được sử dụng bởi .val() luôn cho thấy giá trị có thể nhìn thấy hiện nay, trong khi giá trị trả về text() 's có thể là sai lầm.

+0

thx, hãy thử ngay bây giờ. Tôi hiện không thể sao chép vấn đề tôi đã có với val() và cắt ngắn. Có lẽ tôi đã nghi ngờ sai ... – Christophe

+5

Cảm ơn một loạt các ví dụ. Rõ ràng đó là vấn đề của tôi, tôi đã viết với text() và đọc với val(). – Christophe

+0

Thay đổi giá trị của vùng văn bản bằng cách sử dụng 'text()' không hoạt động nữa sau khi thay đổi bất kỳ thứ gì trong đó (ví dụ: thêm ký tự) – Jan

-4

Chọn <textarea> theo tên thuộc tính thay vì id.

<textarea id="message" name="message"></textarea> 
<script> 
    jQuery("textarea[name='message']").val(); 
</script> 
+15

Làm cách nào để nhận được phiếu bầu? Nó hoàn toàn không liên quan đến câu hỏi được hỏi và cung cấp hoàn toàn không có giá trị. Đó cũng là hướng dẫn kém khi sử dụng ID trong bộ chọn hiệu quả hơn nhiều và sẽ không chọn nhiều văn bản có cùng tên. – michael

6

.val() luôn hoạt động với các yếu tố textarea.

.text() hoạt động đôi khi và không thực hiện được các 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à .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.

Các vấn đề liên quan