JQuery TextArea的取值与赋值问题

首先,说明这不是一个简单的问题!

先说取值:

$("#textarea").text();//读取
最近测试时候发现在firefox或Chrome中读取不出textArea的值,IE正常。

于是修改为:

$("#textarea").val();
问题解决,不过搜索时,发现有人提另一个问题:

当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r \n 回车符 \r 换行符

如果用text()获取textarea中的值,那么存入数据库的数据就只会有\r 如果用var()获取textarea中的值,
那么存入数据库的数据就只会有\n 这样的区别就是,在IE下,
你如果是读取用text()存入的数据在展示在textarea中,那么数据的换行是正常的。
而读取用var()存入的数据在展示在textarea中,那么数据的就不会换行。
没有具体测试过看来用val()也不妥当。但是这也是必求之策。

再说赋值:
看代码:

$("<div id='x1'><textarea id='t1'></textarea>" +
 "<textarea id='t2'></textarea></div>").appendTo("body");
$("#t1").text("AAA");$("#t2").val("BBB");
alert("t1=" + $("#t1").text() + "/" + $("#t1").val());
alert("t2=" + $("#t2").text() + "/" + $("#t2").val());
alert($("#x1").html());
在IE下,不管用val()或text()设定,后续的读取都正常;但在Firefox下,使用val()指定的值,画面上会出现,但是用text()或是透过html()检视时却是字串。因此在Firefox中,如果你希望设定给textarea值出现在html()中或可以被clone(),请用text(...)设定。

且慢。事情如果这麽单纯,那麽连小学生也会跨浏览器了。使用text()设定时得注意换行问题,若你在IE中下text("A\nA"),在显示时只会呈现空一格而不会换行。依我测试的结果,在IE下text("A\r\A")得到显示结果比较接近预期,但是text("A\rA")在Firefox中显示时会换列,用text()取出时却是连在一起的... 这... 这... 这...
最后,只能采取懦夫策略,在呼叫.clone()前做了这件事迴避问题:
$theDiv.find("textarea").each(function() { $(this).text($(this).val()); }); 
很丑,但看来是有效的! 如果有人有其他好点子,再分享一下吧!
【心得】没有噼成一字马的本事,不要跟别人说你会"跨"浏览器!

<think>好的,用户想了解如何在JavaScript中对textarea进行取值赋值操作。首先,我需要回顾一下处理textarea元素的基本方法。通常,在JavaScript中操作DOM元素可以通过ID获取元素,然后访问其value属性。不过,用户可能需要具体的示例代码,所以应该提供获取和设置值的实际例子。 接下来,要确保使用正确的方法来获取textarea元素。常见的方式是使用document.getElementById或者document.querySelector。比如,如果textarea有一个ID为“myTextarea”,可以用getElementById获取。然后,取值就是读取value属性,赋值则是设置value属性。 另外,用户可能想知道事件监听,比如实时获取输入值。这时候需要提到input事件,当用户输入时触发函数更新值。例如,添加事件监听器,在输入时执行某个函数。 还要考虑不同情况,比如表单提交时的处理。在表单提交事件中,阻止默认行为,然后获取textarea的值进行处理。这部分可能需要一个表单提交的示例代码。 同时,要检查是否有常见的错误需要注意。比如,确保DOM加载完成后再获取元素,否则可能得到null。通常可以将代码放在DOMContentLoaded事件中,或者放在body底部。 另外,是否需要提到jQuery?虽然用户的问题是关于JavaScript的,但可能有些用户也想知道jQuery的方法。不过根据问题描述,用户明确要求JavaScript,所以可能不需要涉及jQuery,除非用户有后续问题。 还有,是否需要处理多行文本的特殊情况?比如换行符的处理,但通常value属性会自动处理这些,所以可能不需要特别说明。不过可以提一下textContent和innerHTML的区别,但value属性是正确的选择。 最后,结合用户提供的引用,虽然引用的内容主要是关于表单字段和JavaScript实用函数,但可能当前问题关联不大。但引用[2]中的函数可能展示了JavaScript处理字符串和时间的方法,可以忽略这部分,专注于textarea的操作。 总结回答的结构:首先介绍获取元素的方法,然后取值赋值的代码示例,接着事件监听和表单处理的例子,最后注意事项。确保示例代码正确,并符合用户的需求。</think>在JavaScript中操作`<textarea>`元素的值主要通过访问`value`属性实现。以下是具体方法和示例: --- ### 1. 获取textarea的值 通过DOM选择器获取元素后,直接读取其`value`属性: ```javascript // 通过ID获取元素 const textarea = document.getElementById('myTextarea'); const value = textarea.value; console.log(value); // 输出当前内容 ``` --- ### 2. 设置textarea的值 通过修改`value`属性赋值: ```javascript textarea.value = '这是新内容'; // 直接覆盖原有内容 ``` --- ### 3. 实时监听输入变化 使用`input`事件监听用户输入: ```javascript textarea.addEventListener('input', function() { console.log('当前内容:', this.value); // 实时输出输入内容 }); ``` --- ### 4. 表单提交示例 在表单提交时获取值: ```html <form id="myForm"> <textarea id="myTextarea"></textarea> <button type="submit">提交</button> </form> <script> document.getElementById('myForm').addEventListener('submit', function(e) { e.preventDefault(); // 阻止默认提交 const content = document.getElementById('myTextarea').value; console.log('提交内容:', content); // 发送到服务器或进一步处理 }); </script> ``` --- ### 注意事项 - **DOM加载顺序**:确保脚本在`<textarea>`加载后执行,可将代码放在`DOMContentLoaded`事件中: ```javascript document.addEventListener('DOMContentLoaded', function() { // 操作textarea的代码 }); ``` - **`innerHTML`的区别**:`value`属性用于表单值,`innerHTML`用于元素内容(不适用于表单控件)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值