2012-01-13 36 views
95

我正在使用jQuery,並想知道是否應該使用val()或text()(或其他方法)來讀取和更新textarea的內容。val()與textarea的文本()

我已經嘗試過兩種方法,而且我遇到了問題。當我使用text()更新textarea時,換行符(\ n)不起作用。當我使用val()來檢索textarea內容時,如果文本太長,文本會被截斷。

+0

您是否嘗試過html()? – Znarkus 2012-01-13 16:59:31

+0

這是什麼意思換行符不起作用? – kaz 2012-01-13 17:00:16

+0

@Znarkus:不... – Christophe 2012-01-13 17:01:34

回答

133

設置/獲取文本區域值的最佳方法是.val(),.value方法。

.text()在內部使用.textContent(或.innerText for IE)方法來獲取<textarea>的內容。下面的測試案例說明如何text().val()之間的相互關係:

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 

value財產,通過.val()使用始終顯示當前可見的價值,而text()的返回值可以是錯誤的。

+0

thx,現在就試試這個。我目前無法複製我用val()和截斷的問題。也許我得到了錯誤的嫌疑...... – Christophe 2012-01-13 21:23:28

+5

感謝一堆例子。顯然這是我的問題,我用text()編寫並用val()讀取。 – Christophe 2012-01-14 03:02:00

+0

使用'text()'改變textarea的值在手動改變任何東西之後不再起作用(例如添加一個字符) – Jan 2017-07-03 15:37:39

-4

通過屬性名稱而不是id選擇<textarea>

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

這是怎麼得到的嗎?這與問題完全無關,並且絕對沒有價值。這也是一個糟糕的指導,因爲在選擇器中使用ID效率更高,並且不會選擇具有相同名稱的多個textareas。 – michael 2016-06-24 20:01:22

6

.val()總是適用於textarea元素。

.text()工作有時會失敗其他時間!這是不可靠的(在Chrome 33測試)

最好的是,.val()也可以無縫地與其他表單元素(如input),而.text()失敗。