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

使用 javascript 设置文本输入字段所需的最小长度?

使用 javascript 设置文本输入字段所需的最小长度?

守候你守候我 2023-07-14 15:52:22
我希望能够根据用户输入的字符数来执行验证 - 我希望至少有 7 个字符。(最大值是使用 HTML 属性设置的) - 我尝试了以下方法:v3 = document.getElementById("npo-registration-number");flag3 = true;if (val >= 3 || val == 0) {        if (v3.value == "") {            v3.style.borderColor = "red";            flag3 = false;        }        else if (v3.value.length === 7){            v3.style.borderColor = "green";            flag3 = true;        }   }上述方法在一定程度上有效。仅当输入 7 个字符时,输入字段边框颜色才会显示绿色。但是,如果我从该点开始删除字符,边框将保持绿色。任何有关此事的帮助都将受到赞赏。
查看完整描述

5 回答

?
一只萌萌小番薯

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

我不完全确定你想要什么;这接近您要寻找的吗?


您可能执行了此操作,但没有将其包含在您的代码片段中,但我们需要在每次编辑表单时运行它。我们向输入添加一个事件侦听器。


const input = document.getElementById('npo-registration-number');

input.addEventListener('input', () => {

    // set the border to red if the value is < 7 characters

    if (input.value.length < 7) {

        input.style.borderColor = 'red';

        return;

    }

    // otherwise, set it to green

    input.style.borderColor = 'green';

});

这解决了一个问题:除非表单的值是空字符串,否则不要将边框的颜色设置为红色。相反,当输入长度低于 7 时,我们希望边框为红色。


查看完整回答
反对 回复 2023-07-14
?
弑天下

TA贡献1818条经验 获得超8个赞

您需要捕获input事件,以便 js 可以评估和更新。 


    const ev3 = document.getElementById("npo-registration-number");

     let flag3 = true;

     ev3.addEventListener('input', (e) => {

       const val = e.target.value;

       if (val.length === 7){

                ev3.style.borderColor = "green";

                flag3 = true;          

        }

        else {

           ev3.style.borderColor = "red";

           flag3 = true;   

        }

     });

input {

  outline: 0;

  border: 1px solid;

}

<input id="npo-registration-number" type='text'>


查看完整回答
反对 回复 2023-07-14
?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以只使用为其运行此功能的按钮,例如send或post按钮(许多网站使用此方法)。


function click(){

  v3 = document.getElementById("npo-registration-number");

  flag3 = true;


  if (val >= 3 || val == 0) {

        if (v3.value == "") {

            v3.style.borderColor = "red";

            flag3 = false;

        }

        else if (v3.value.length === 7){

            v3.style.borderColor = "green";

            flag3 = true;

        }

   }

}


查看完整回答
反对 回复 2023-07-14
?
呼唤远方

TA贡献1856条经验 获得超11个赞

是因为你的条件


if (v3.value == "") {

            v3.style.borderColor = "red";

            flag3 = false;

        }

当您开始删除输入中的字符时,您的输入不会再次变为红色,因为仅当没有字符时它才是红色,并且输入 7 个字符后它会变为绿色。


查看完整回答
反对 回复 2023-07-14
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

请尝试这个


v3 = document.getElementById("npo-registration-number");

flag3 = true;


if (v3.value == "") {

   v3.style.borderColor = "red";

   flag3 = false;

 } else {



 if (v3.value.length < 7){

    v3.style.borderColor = "red";

    flag3 = false;

    }

 else {

    v3.style.borderColor = "green";

    flag3 = true;

  }

}


查看完整回答
反对 回复 2023-07-14
  • 5 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

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