输入框中没有内容了
来源: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回答
同学你好,代码中存在以下问题(下方代码都是以账户名为例,其他的两个输入框代码同学自己改一下)
1、一个等号是赋值,两个等号是比较,下方应该使用两个等号

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

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

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

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

如果对逻辑与和逻辑或还不熟悉,可以复习一下第一个阶段的课程,以巩固所学知识。地址如下:
https://class.imooc.com/lesson/768#mid=19221
https://class.imooc.com/lesson/768#mid=19226
5、第一次输入正确的内容,再修改为错误的,点击注册,会提示注册成功,如下:

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

祝学习愉快~
优秀前端选手
2020-10-31
onblur事件里的if条件要写双等号“==”,一个等号是赋值,直接将内容清空了,
input1为真的单词拼错了,是true
相似问题