【问题标题】:Can't input text after deleting it删除后无法输入文字
【发布时间】:2019-07-08 12:07:26
【问题描述】:

我做了一个输入文本,一旦达到 10 个字符,它就会变成红色。 如果我删除一些已经存在的输入文本,我将无法添加文本。 我必须使用 preventDefault 来做到这一点。

1) 我怎样才能让我的代码工作并在我删除一些文本后让我输入。 2) 有没有办法在不使用 addEventListener 但仍使用 preventDefault 的情况下做到这一点? 我对这个 JavaScript 东西很陌生。提前谢谢你。

function ceScriu() {

  var numeInput = document.querySelector("[name='nume']");
  var nume = numeInput.value;
  var nu = nume.toString().toLowerCase();
  var divInput = document.querySelector("[name='divul']");
  var div = nu.length;

  document.querySelector("[name='divul']").innerHTML = div;

  if (div > 9) {
    numeInput.addEventListener("keypress", function(event) {
      event.preventDefault()
    });
    divInput.classList.add("counter");
  } else {
    divInput.classList.remove("counter");
  }
}

代码运行良好。计数器到 10 时变为红色。但如果我写字符,删除它们,然后再尝试写更多,我无法输入任何字符。

【问题讨论】:

  • 请注意,我使用 preventDefault 将所有输入停止在 10 个字符处,但如果字符限制在 10 个以下,我仍然希望能够输入字符。
  • 我认为可以通过从输入元素调用onChange函数来完成。
  • 好吧,你禁用按键....你会这样做似乎很奇怪。

标签: javascript dom preventdefault


【解决方案1】:

编辑: 请检查这个plukerhttps://plnkr.co/edit/ny35WPX3fsTmw1oWY1j8

我修改了您的代码以检查事件侦听器中的长度,如下所示

window.onload = function () { 
  var numeInput = document.querySelector("[name=nume]");
  numeInput.addEventListener("keypress",function(event){
              var nume = numeInput.value;
              var nu = nume.toString().toLowerCase();    
               var divInput = document.querySelector("[name=divul]");
               var div = nu.length;
               document.querySelector("[name=divul]").innerHTML = div;
               if(div > 9){
                 event.preventDefault();
                 divInput.classList.add("counter");        
               }else{    
                 divInput.classList.remove("counter");
               }
  });

}

【讨论】:

  • 我都检查过了,但似乎没有奏效。第一个超出了 10 个字符的限制,第二个在我删除了一些字符后仍然不允许我输入文本。
  • @ZiatcoFelix 我已经编辑了我的回复并提供了工作插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 2023-03-16
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多