javascript - 计数器不根据功能改变颜色

标签 javascript dom preventdefault onkeypress

当我达到 10 个字符时,计数器需要变红。当我达到 10 个字符时,我必须再次按任意按钮才能使计数器变为红色。当我删除字符时,计数器保持红色而不是变回黑色。

<script>

            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;



                numeInput.onkeypress = function(){
                if(div === 10){
                    event.preventDefault();
                    divInput.classList.add("counter");


                }else{

                    divInput.classList.remove("counter");

                }
                }



            }



</script>

我希望当我输入第 10 个字符时计数器变红,当我到达第 10 个字符后开始删除字符时我希望计数器变回黑色。

最佳答案

1.) 通过在 onkeypress 之前声明变量,您将传递原始值。最好在按键功能中再次检查长度/值。

2.) Onkeypress 不适用于退格键。您应该使用“onkeyup”来检测退格变化。

3.) 如果你想检测10个或更多字符(并保持框红色直到长度小于10),你应该使用div >= 10作为比较(超过或等于 10)

`

        function ceScriu(){
          // *1 
          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;



   // *2         numeInput.onkeypress = function(){
                /* New event check*/
                   numeInput.onkeyup = function(){
                /* End new event check*/

                /* New length Check */
                 let nume = numeInput.value;
                 let nu = nume.toString().toLowerCase();
                 let div = nu.length;
               /* End new length check */

   // *3         if(div === 10){
                /* New comparison */
                   if(div >= 10){
                /* End new comparison */

                event.preventDefault();



                divInput.classList.add("counter");


            }else{

                divInput.classList.remove("counter");

            }
            }



        }

`

希望对您有所帮助!

关于javascript - 计数器不根据功能改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57004629/

相关文章:

javascript - 元素未定义 jQuery $(element).remove()

jquery - 阻止 Firefox 中 jQuery keydown 的默认事件

javascript - 带 'German Time' 选项的闹钟 - 在 JavaScript 中

javascript - 获取给定 id 的 Youtube 标题

javascript - 在 Javascript 中获取 DOM 元素的 screenX

jquery - # HREF 中的(散列)字符会阻止 PreventDefault 工作

javascript - 如何防止表单提交冒泡

javascript - 你如何在 Javascript 中缓存图像

java - 是否可以使用 JSP/JSTL 生成动态 css/javascript 文件?

c++ - 使用 Webkit < 1.3 访问 Gtk+ 中的 DOM 元素