动态生成ID的多textarea字数统计切换失效问题求助
解决动态生成textarea的字数统计失效问题
问题出在你当前的代码仅针对新生成的单个textarea绑定了input事件,之前生成的textarea没有被绑定事件,所以切换回去输入时不会触发统计逻辑。
解决方案:使用事件委托
事件委托通过将事件绑定到静态父容器(比如页面中一开始就存在的容器,或用document兜底),利用事件冒泡机制监听所有匹配规则的子元素(包括后续动态生成的)的事件,不管是旧的还是新的textarea,输入时都会触发统计逻辑。
修改后的代码如下:
// 绑定到静态父容器(推荐用更接近的容器,比如所有textarea的父div,这里用document兜底) $(document).on("input", "textarea[id^='विवरण_']", function() { var $currentTextarea = $(this); // 从textarea的ID中提取后缀(比如从"विवरण_1"得到"1") var startvalue = $currentTextarea.attr("id").split("_")[1]; var सीमा = $currentTextarea.attr("maxlength"); var संख्या = $currentTextarea.val().length; // 获取当前textarea对应的字数显示span和状态提示元素 var $numberSpan = $("#संख्या_" + startvalue); var $statusElement = $("#अक्षर-गणक_" + startvalue); // 注意:如果每个textarea对应独立的状态元素,要改成带后缀的ID if (संख्या >= सीमा) { $statusElement.addClass('text-danger').removeClass('text-muted'); } else { $statusElement.addClass('text-muted').removeClass('text-danger'); } $numberSpan.text(संख्या); });
关键说明
- 事件委托的选择器:
"textarea[id^='विवरण_']"会匹配所有ID以विवरण_开头的textarea,不管是先存在的还是动态生成的。 - 关联对应元素:通过当前textarea的ID提取
startvalue,确保找到对应的字数显示span和状态提示元素,避免操作全局元素导致的混乱。 - 替换静态父容器:如果所有textarea都在一个固定的父容器里(比如
<div class="textarea-container"></div>),把document换成.textarea-container会更高效。
内容的提问来源于stack exchange,提问作者Deshbhakt Ankitgiri2411
相关产品推荐
相关产品推荐

