怎么用js实时检测input的变化?我的代码哪里出问题了?

图片描述

图片描述

如图,想根据用户输入的内容给出提示,输入框下面的字符计数没有问题,但是后面的判断却不起作用,我的代码哪里出问题了?

window.onload=function(){
//省略了变量申明部分
username.onkeyup=function(){
        //判断输入长度的语句
        count.style.visibility="visible";
        name_length=getLength(this.value);
        count.innerHTML=name_length+"个字符";
        if (name_length===0) {
            count.style.visibility="hidden";
        }
        //判断输入内容的语句
        if (re.test(this.value)) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">含有非法字符';
        }else if (this.value==="") {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">不能为空';
        }else if (this.length>25) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">长度超过25个字符';
        }else if (this.length<6) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">长度少于6个字符';
        }else{
            name_msg.innerHTML='<img class="notice" src="./images/ok_green.png">';
        }
    }
}

无论我输入了什么都是对号,除非清空提示“不能为空”。

阅读 3.9k
3 个回答

为何用this.length判断而不是用getLength获取到的-长度判断,或是用this.value.length。

window.onload=function(){
//省略了变量申明部分
username.onkeyup=function(){
        //判断输入长度的语句
        count.style.visibility="visible";
        name_length=getLength(this.value);
        count.innerHTML=name_length+"个字符";
        var value = this.value;
        if (name_length===0) {
            count.style.visibility="hidden";
        }
        //判断输入内容的语句
        if (re.test(value)) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">含有非法字符';
        }else if (value==="") {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">不能为空';
        }else if (value.length>25) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">长度超过25个字符';
        }else if (value.length<6) {
            name_msg.innerHTML='<img class="notice" src="./images/notice_red.png">长度少于6个字符';
        }else{
            name_msg.innerHTML='<img class="notice" src="./images/ok_green.png">';
        }
    }
}

醉了...this指的是你当前这个节点input , this.value是你inuput的值 , this.length是你input节点的长度 而不是value的长度 , 所以this.length一直会是undefined , this.value.length才是你输入字符串的长度

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题