You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态生成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(संख्या);
});

关键说明

  1. 事件委托的选择器:"textarea[id^='विवरण_']"会匹配所有ID以विवरण_开头的textarea,不管是先存在的还是动态生成的。
  2. 关联对应元素:通过当前textarea的ID提取startvalue,确保找到对应的字数显示span和状态提示元素,避免操作全局元素导致的混乱。
  3. 替换静态父容器:如果所有textarea都在一个固定的父容器里(比如<div class="textarea-container"></div>),把document换成.textarea-container会更高效。

内容的提问来源于stack exchange,提问作者Deshbhakt Ankitgiri2411

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:22:53