jQuery复选框选中填充textarea功能失效问题求解
问题根源
操作textarea时错误使用了.text()方法。
textarea是表单输入类元素,用户可见、可编辑的内容由其value属性控制,并非元素内部的文本节点:
- 页面初始加载未发生用户交互时,
.text()修改的内部文本节点会被当作默认内容展示,表面看功能正常 - 一旦用户对textarea做过输入、删除这类手动操作,浏览器会优先维护元素的
value状态,此时再用.text()修改内部文本节点,不会同步更新页面上的可见内容,就会出现勾选复选框后无法填充预设值的问题。
修复代码
将所有针对textarea的.text()调用替换为.val()方法即可,优化后的完整代码:
$('#checkbox_a').change(function(){ const $textArea = $("#textarea_b"); // 先清空内容 $textArea.val(""); // 复选框选中时填充预设值 if ($(this).is(':checked')) { $textArea.val("Yes"); } });
代码里额外做了小优化:用$(this)直接指代当前触发change事件的复选框,缓存textarea的jQuery对象,避免重复查询DOM。
注意:所有可交互的表单元素(input、textarea、select),读写用户可见的输入值时都要使用
.val()方法,不要用.text()或.html(),否则都会出现交互后赋值不生效的问题。
内容的提问来源于stack exchange,提问作者Jawequo
相关产品推荐
相关产品推荐

