输入框中没有内容了

来源:3-9 编程练习

慕慕1502015

2020-10-30 21:58:07

# 具体遇到的问题
代码似乎是没有报错,但是为什么输入内容之后再失去光标内容就没有了。
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        form{
            width:300px;
            background:pink;
            text-align: center;
            padding:30px 0;
            margin:100px auto;
        }

    </style>
</head>
<body>
    <form id="form">
        <p><input type="text" name="name" id="username" placeholder="请输入账户名"></p>
        <span></span>
        <p><input type="text" name="chinaName" id="chinaName" placeholder="请输入中文名"></p>
        <span></span>
        <p><input type="email" name="eamil" id="email" placeholder="请输入邮箱"></p>
        <span></span>
        <p><input type="submit" value="注册" id="submit"></p>
    </form>
    <script type="text/javascript">
        var spans=document.getElementsByTagName("span"),
            username=document.getElementById("username"),
            chinaName=document.getElementById("chinaName"),
            email=document.getElementById("email"),
            submit=document.getElementById("submit"),
            input1=false,
            input2=false,
            input3=false;
        username.onfocus=function(){
            spans[0].innerHTML="请输入6-18位字母、数字、下划线";
        }
        chinaName.onfocus=function(){
            spans[1].innerHTML="请输入中文名";
        }
        email.onfocus=function(){
            spans[2].innerHTML="请输入邮箱";
        }
        username.onblur=function(){
            var reg = /^\w{6,18}$/;
            if(username.value=""){
                spans[0].innerHTML="账户名为空";
                spans[0].style.color="red";
            }else if(reg.test(username.value)){
                span[0].innerHTML="";
                input1=ture;
            }else{
                spans[0].innerHTML="请输入6-18位字母、数字、下划线";
                spans[0].style.color="red";
            }   
        }
        chinaName.onblur=function(){
            var reg = /^[\u4e00-\u9fa5]{2,4}$/;
            if(chinaName.value=""){
                spans[1].innerHTML="姓名为空";
                spans[1].style.color="red";
            }else if(reg.test(chinaName.value)){
                span[1].innerHTML="";
                input2=ture;
            }else{
                spans[1].innerHTML="请输入中文名";
                spans[1].style.color="red";
            }   
        }
        email.onblur=function(){
            var reg = /^\w+@\w+(?:\.[a-z]{2,4})+$/;
            if(email.value=""){
                spans[2].innerHTML="邮箱为空";
                spans[2].style.color="red";
            }else if(reg.test(email.value)){
                span[2].innerHTML="";
                input3=ture;
            }else{
                spans[2].innerHTML="请输入邮箱";
                spans[2].style.color="red";
            }  
        }
        submit.onclick=function(){
            if(input3||input1||input2){
                alert("注册成功");
            }else{
                alert("请按要求完成全部信息!");
            }
        }
    </script>
</body>

</html>

入代码,可通过选择【代码语言】突出显示

写回答

2回答

好帮手慕言

2020-10-31

同学你好,代码中存在以下问题(下方代码都是以账户名为例,其他的两个输入框代码同学自己改一下)

1、一个等号是赋值,两个等号是比较,下方应该使用两个等号

http://img.mukewang.com/climg/5f9ccf3809c1461404440070.jpg

2、spans少写了一个字母s,修改如下:

http://img.mukewang.com/climg/5f9ccf9e091c694f03880083.jpg

3、单词写错,正确的写法是true,修改如下:

http://img.mukewang.com/climg/5f9ccfc6092e165b02900067.jpg

4、有验证不正确的,点击注册按钮,会弹出“注册成功”的提示,如下:

http://img.mukewang.com/climg/5f9cd01909d8d65208560350.jpg

因为同学使用的是逻辑或,当其中一个操作数隐式类型转换后返回true,那么这个表达式返回的就是true。建议:使用逻辑与,代码参考:

http://img.mukewang.com/climg/5f9cd40809d82a4405270069.jpg


如果对逻辑与和逻辑或还不熟悉,可以复习一下第一个阶段的课程,以巩固所学知识。地址如下:

https://class.imooc.com/lesson/768#mid=19221

https://class.imooc.com/lesson/768#mid=19226

5、第一次输入正确的内容,再修改为错误的,点击注册,会提示注册成功,如下:

http://img.mukewang.com/climg/5f9cd4a3091f6b7c08840328.jpg

原因是在验证匹配正确了之后,就把标识符修改为了true,在验证匹配错误之后没有修改为false,以第一个为例,修改如下:

http://img.mukewang.com/climg/5f9cd52809f1b5f508490595.jpg

祝学习愉快~

0

优秀前端选手

2020-10-31

onblur事件里的if条件要写双等号“==”,一个等号是赋值,直接将内容清空了,

input1为真的单词拼错了,是true

1

0 学习 · 14456 问题

查看课程