javascript - 计算具有不同 id 和名称属性的动态创建的文本区域的字符数

标签 javascript jquery

我有两个文本区域,一个在另一个下

<div class="form-group">
<span id="textarea_feedback1"></span>
<span> 🖊Characters left</span>
<br>
<textarea name="answer1" id="answer1" rows="4" placeholder="Type your answer here" areaid="1"></textarea>
<hr>
<span id="textarea_feedback2"></span>
<span> 🖊Characters left</span>
<br>
<textarea name="answer2" id="answer2" rows="4" placeholder="Type your answer here" areaid="2"></textarea>
</div>

两个文本区域都是动态创建的,并且它们具有不同的 id 和名称属性。在某些时候,它们可能是 2、3、4……等等。 我想做的是为每个动态应用的文本区域创建一个字符计数器。

如果文本区域的数量是固定的(即始终为 2),那就很容易了。

但是我很难找到一种方法将同一个 JQuery 脚本应用到具有不同名称和 id 属性的文本区域。

我正在考虑向每个文本区域添加一个像 areaid="" 这样的独特属性,这样我就可以以某种方式动态修改脚本。

这是我的脚本

$(document).ready(function() {
var text_max = 400;

$('#textarea_feedback1').html('<span>'+text_max + '</span>');

$('#answer1').on('input click keyup', function() {
    var text_length = $('#answer1').val().length;
    var text_remaining = text_max - text_length;

    $('#textarea_feedback1').html('<span>'+text_remaining + '</span>');
});

});

基本上,我认为应该发生的是,基于 areaid attr 来更改 span id="textarea_feedback" 和 textatea id="answer" 来匹配 areaid 值,因此脚本可以以某种方式单独工作到我拥有的尽可能多的文本区域。

这里是jsfiddle

最佳答案

spantextarea 包装在 div 等元素中,以便您可以轻松访问这两个元素。

;window.onload = function(){
  var text_max = 400;

  for(var tL=document.querySelectorAll('.dummy textarea'), i=0, j=tL.length; i<j; i++){
    $(tL[i]).on('input click keyup', function(){
        var text_length = this.value.length;
        var text_remaining = text_max - text_length;

        this.parentNode.querySelector('span').textContent = text_remaining
    })
  }
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">

<div class = 'dummy'>
<span id="textarea_feedback1"></span>
<span> 🖊Characters left</span>
<br>
<textarea name="answer1" id="answer1" rows="4" placeholder="Type your answer here" areaid="1"></textarea>
</div>

<hr>

<div class = 'dummy'>
<span id="textarea_feedback2"></span>
<span> 🖊Characters left</span>
<br>
<textarea name="answer2" id="answer2" rows="4" placeholder="Type your answer here" areaid="2"></textarea>
</div>
</div>

关于javascript - 计算具有不同 id 和名称属性的动态创建的文本区域的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60226062/

相关文章:

javascript - 使用后退按钮从重新访问的页面中删除悬停效果

javascript - .join 在 JavaScript 中是什么意思?

javascript - JQuery 动画覆盖问题

javascript - onclick 监听器不适用于动态 dom 内容

Javascript 在输入类型文本上获取按键 "Enter"事件

javascript - 添加新行,将日期选择器绑定(bind)到列以奇怪的方式工作

javascript - 在javascript中滚动时放大缩小图像

javascript - 我应该在 React.js 函数组件中哪里进行 AJAX 和 API 调用?

javascript - 在 Ajax 请求中发送安全参数的最佳方式是什么?

javascript - 在 PHP 文件中实现 javascript 时显示/隐藏功能不起作用