既然气泡被阻止了,为什么还要删除错误的提示信息,直接添加新的提示信息不好么?

来源:4-13 html5默认气泡修改演示

慕斯卡5217687

2018-04-16 01:45:58

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改默认气泡</title>
<style>
.item{

margin: 15px;
}
.item label{
display: inline-block;
width: 80px;
}
.item input{
width: 220px;
height: 30px;
line-height: 30p;
outline: 0;
border: 1px solid #666;
border-radius: 5px;
}
.item input[type="submit"]{
border: none;
margin-left: 40px;
}

.error-message{
color: red;
font-size: 16px;
text-indent: 120px;
}
</style>
</head>
<body>
<section>
<form id="forms" action="#" method="post" enctype="multipar/form-data">

<div class="item">
<label for="text">用户名</label>
<input type="text" id="text" required placeholder="请输入用户名">
</div>
<div class="item">
<label for="email">邮箱</label>
<input type="email" name="" id="email" required placeholder="请输入邮箱">
</div>
<div class="item">
<input type="submit" value="提交" id="getSubmit">
</div>
</form>
</section>
<script>
//封装一个函数
function replaceInvalidityUi(form){
//阻止默认的气泡
form.addEventListener("invalid",function(event){
//阻止默认气泡的方法
event.preventDefault();
},true)
//阻止提交默认气泡
form.addEventListener("submit",function(event){
if(!this.checkValidity()){
event.preventDefault();
}
},true)

//绑定 提交 summit 点击事件 触发更改气泡
var getSubmit=document.getElementById("getSubmit");
getSubmit.onclick=function(event){
//在点击时  获取到所有没有符合验证的input
var inValidityField=form.querySelectorAll(":invalid");

//获取到所有的错误提示信息
var errorMessage=form.querySelectorAll(".error-message");

var parent;
console.log(errorMessage);
//循环删除所有的错误提示信息
for(var i=0;i<errorMessage.length;i++){
// .parentNode 返回一个元素的父级节点
errorMessage[i].parentNode.removeChild(errorMessage[i]);
}
//添加新的提示信息
for(var i=0;i<inValidityField.length;i++){
//获取到每一个错误input的父级元素
parent=inValidityField[i].parentNode;
//在每一父级元素的(bfroreend) 闭合标签之前 添加 新的提示信息
parent.insertAdjacentHTML("beforeend","<div class='error-message'>"+inValidityField[i].validationMessage+"<div>");
}
//如果有错误的信息
if(inValidityField.length>0){
inValidityField[0].focus();
}
};

}
var form = document.getElementById('forms');
replaceInvalidityUi(form);
</script>
</body>
</html>


写回答

1回答

好帮手慕糖

2018-04-16

你好,如下,不删除错误信息的话,就会造成如下,第一次提交的时候有错误信息,但是第二次提交错误的时候,还是会再次添加错误的信息。可以测试下哦。

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

祝学习愉快~

3

0 学习 · 5012 问题

查看课程