【问题标题】:Stuck using .slice to remove a character in the value of an input field卡住使用 .slice 删除输入字段值中的字符
【发布时间】:2021-12-30 11:23:09
【问题描述】:

我有一些 HTML:

<input type="text" />

我正在努力做到这一点,当字符限制达到 12 时,javascript 会自动从输入字段中删除下一个字符。在此处查看代码笔:https://codepen.io/jadedeterville/pen/NWayzpM

这是我的 JS:


inputEl.addEventListener("keyup", fixLength);

function fixLength() {
  const inputElValue = inputEl.value.length;
  if (inputElValue > 11) {
    inputEl.innerHTML.slice(12);
  }
} 

我也尝试过inputEl.slice(12);inputElValue.slice(12);,但它们都告诉我 .slice 不是函数。我尝试添加 toString() 但这也不起作用。

感谢一些建议。我已经看这个很久了。

提前谢谢你!

【问题讨论】:

    标签: javascript slice addeventlistener


    【解决方案1】:

    试试下面的代码。

    if (inputElValue > 11) {
      inputEl.value = inputEl.value.slice(0,12);
    }
    

    【讨论】:

      【解决方案2】:

      你的脚本有三个错误:

      1. 使用inputEl.innerHTML.slice(12);,您可以对从字符串开头到索引12 的任何内容进行切片。所以基本上您正在清除整个字符串。如果您想保留字符串的特定部分,最好使用string.substr(startIndex, length)
      2. 您没有将切片操作的结果分配给 <input> 文本框,例如inputEl.innerHTML=inputEl.innerHTML.slice(12);
      3. 您应该使用.value 属性而不是.innerHTML,因为后者会出现空。

      把它们放在一起:

      let inputEl = document.getElementById("inp");
      
      inputEl.addEventListener("keyup", fixLength);
      
      function fixLength() {
        const inputElValue = inputEl.value.length;
        if (inputElValue > 11) {
          inputEl.value = inputEl.value.substr(0, 12);
        }
      }
      <input type="text" id="inp" />

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-10
        • 2018-07-11
        • 2016-01-16
        • 1970-01-01
        • 2016-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多