麻烦老师帮我看一下代码,我脑子晕晕,有点搞不清哪里写错了

来源:4-15 编程练习

小屁鹤

2019-09-04 10:35:08

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8">

<style type="text/css">

div{

width: 400px;

height: 30px;

margin: 20px 0 10px 40px;

text-align: right;

line-height: 30px;

}

input[type=submit]{

width: 80px;

height: 30px;

line-height: 30px;

background-color: #999;

border: 1px solid black;

cursor: pointer;

}

input[type=submit]:hover{

background-color: white;

}

.errorMessage{

color: red;

margin: 2px;

text-indent: 10px;

}

</style>

</head>

<body>

<form id="forms">

<div>

<label for="username">用户名:</label>

<input type="text" id="username"  required>

</div>

<div>

<label for="email">Email:</label>

<input type="email" id="email" required>

</div>

<div>

<input type="submit" id="submit" value="提交">

</div>

</form>

<script type="text/javascript">

var form = document.getElementById("forms");

replaceInvalidMessage(form);

function replaceInvalidMessage(form){

var submitBtn = document.getElementById('submit'),

username = document.getElementById('username'),

email = document.getElementById('email');



// 阻止默认事件

form.addEventListener("invalid", function(event){

event.preventDefault();

},true);

form.addEventListener("submit",function(event){

if(!this.checkValidity()){

event.preventDefault();

}

},true);



// 监听"提交"按钮

submitBtn.addEventListener("click",function(event){

var itFormInvalid = form.querySelectorAll(":invalid"),

errorMessage = form.querySelectorAll(".errorMessage"),

parent;


// 删除多余错误提示信息

for(var i = 0; i < errorMessage.length; i++){

errorMessage[i].parentNode.removeChild(errorMessage[i]);

}


// 修改默认错误提示信息

username.addEventListener("invalid",function(){

username.setCustomValidity("用户名:请填写此字段!");

})

email.addEventListener("invalid",function(){

email.setCustomValidity("Email:请填写此字段!");

})


// 加入错误信息

for(var i = 0; i < itFormInvalid.length; i++){

parent = form.parentNode;

parent.insertAdjacentHTML("afterbegin","<div class = 'errorMessage'>" + itFormInvalid[i].validationMessage + "</div>");

}

if( itFormInvalid.length > 0){

itFormInvalid[0].focus();

}

})

}


</script>

</body>

</html>


写回答

1回答

好帮手慕码

2019-09-04

同学你好!

需要先注释掉修改默认错误提示信息

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

(1)可以在往上找一级父节点,再插入,如下:

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


(2)用户名和email相反了是因为无效的文本域是实时获取的,但是label标签获取出来的是所有的,每次都会从第一个显示,所以会有问题。可以通过无效的文本域来获取label标签文本,参考:

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

整体修改如下:

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

效果:

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

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

同学可以参考上修改一下,并且可以再优化下布局

如果帮助到了你,欢迎采纳,祝学习愉快~


0

0 学习 · 5012 问题

查看课程