textarea手动输入后无法追加下拉选项内容的技术求助
问题分析与解决方案
我来帮你搞定这个小问题!核心原因其实很简单:你现在用的text()方法是用来操作普通DOM元素的文本内容,但textarea的用户输入内容是存在它的value属性里的,用text()根本拿不到护士手动编辑后的最新内容!这就是为啥手动改完之后再追加新选项就失效了——你每次都是基于最初的默认文本去追加,完全没同步用户后来输入的内容。
修正后的代码
直接把text()换成val()就搞定了,这才是操作textarea内容的正确姿势,我还帮你加了个小优化,避免一开始就出现多余的"+":
$("#medication_id").on('change', function(){ // 读取textarea当前的真实内容(包括用户手动输入的部分) const currentContent = $("#medication_pill").val(); // 获取选中的诊断文本 const selectedText = $("#medication_id option:selected").text(); // 有内容才加分隔符,避免开头就出现"+" const newContent = currentContent ? `${currentContent} + ${selectedText}` : selectedText; // 更新textarea内容 $("#medication_pill").val(newContent); });
额外小建议
- 可以给下拉框加个默认空选项(比如
<option value="">请选择诊断结果</option>),避免用户误触触发追加空内容 - 如果护士需要删除已添加的诊断项,还可以扩展功能,比如给每个追加的诊断加个小删除按钮,但这就是额外需求啦
内容的提问来源于stack exchange,提问作者alim1990
相关产品推荐
相关产品推荐

