为了账号安全,请及时绑定邮箱和手机立即绑定

如何为同一页面上的不同输入和文本区域设置动态字符计数器,每个页面的最大长度不同?

如何为同一页面上的不同输入和文本区域设置动态字符计数器,每个页面的最大长度不同?

莫回无 2021-11-18 09:38:04
我有一个产品页面,其中有多个文本输入和一个 textarea 输入。3 个文本输入的最大长度为 18,1 个文本输入的最大长度为 5,1 个文本区域的最大长度为 255。如何在不编写多个函数的情况下为每个元素设置字符计数器?我已经设置了一个基本函数,可以根据 .form-input 的值更改字符计数器 html,但显然这将它应用于所有计数器。我在为每个单独的输入和文本区域指定它时遇到问题。<div class="form-field text-lines" data-product-attribute="input-text">    <label class="form-label form-label--inlineSmall" for="attribute_text_347">Text Line 1:</label>    <p id="text-info">Type exactly as you want the text to appear, including upper/lower case.</p>    <input class="form-input form-input--small" type="text" id="attribute_text_347" name="attribute[347]" maxlength="18">    <span class="characters-left">Characters Left: <span class="counter">18</span></span></div>$(document).ready(function() {    let text_max = 18;    $('.counter').html(text_max);    $('.text-lines .form-input').keyup(function() {        let text_length = $('.text-lines .form-input').val().length;        let text_remaining = text_max - text_length;        $('.counter').html(text_remaining);    });});我希望每个输入/文本区域的字符计数器在输入特定输入/文本区域时更新。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

你有这个的地方:


let text_length = $('.text-lines .form-input').val().length;

let text_remaining = text_max - text_length;

我想你真正想要的是


let text_length = this.value.length;

let max_length = this.getAttribute("maxlength");

let text_remaining = max_length - text_length;

不要再做jquery获取文本长度,获取input元素的最大长度属性


查看完整回答
反对 回复 2021-11-18
?
POPMUISE

TA贡献1765条经验 获得超5个赞

我用你的代码来增加功能。下面是一个例子:


$(document).ready(function() {

  const inputs = $('.form-input');

  inputs.each(function(index, element){

    inputLengthCounter($(element).attr('id'));

  });

});


function inputLengthCounter(input_id) {

  const input = document.getElementById(input_id);

  const text_max = input.maxLength;

  const counter = $(input).next('.characters-left').find('.counter');

  $(counter).html(text_max);


  $(input).keyup(function() {

    let text_length = $(this).val().length;

    let text_remaining = text_max - text_length;


    $(counter).html(text_remaining);

  });

}

https://jsfiddle.net/o20q79n8/


它为每个具有 id 和 maxlength 属性的输入运行函数 inputLengthCounter。


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信