javascript - 当我提交表单以防信息错误时,我只想在输入下显示一条错误消息,如何在此处执行?
问题描述
每次我提交带有空字段的表单时,它都会在每个输入下添加一个新跨度,我想在输入为假时添加一个,并在正常时将其删除(但如果字段为空则保留其他字段)
handleAddEventForm: function(event) {
const addEventForm = event.currentTarget;
let eventTitle = addEventForm.querySelector('#eventTitle]');
let eventDate = addEventForm.querySelector('#eventDate]');
let eventTime = addEventForm.querySelector('#eventTime]')
let eventDescription = addEventForm.querySelector('#eventDescription]');
let arrayToTest = {}
arrayToTest.title = eventTitle;
arrayToTest.date = eventDate;
arrayToTest.time = eventTime;
arrayToTest.description = eventDescription;
arrayToTest.error = '';
for (const key in arrayToTest) {
if (arrayToTest[key].value !== '') {
arrayToTest[key].style.border = "";
} else {
event.preventDefault();
let errorSpan = document.createElement('span');
let message = 'Ce champs est obligatoire'
errorSpan.innerText = message ;
errorSpan.className = "errorSpan";
errorSpan.style.color = "red";
arrayToTest[key].style.border = "3px solid red";
arrayToTest[key].after(errorSpan);
}
}
},
};
解决方案
在循环之前删除所有errorSpan:
handleAddEventForm: function(event) {
const addEventForm = event.currentTarget;
let eventTitle = addEventForm.querySelector('#eventTitle]');
let eventDate = addEventForm.querySelector('#eventDate]');
let eventTime = addEventForm.querySelector('#eventTime]')
let eventDescription = addEventForm.querySelector('#eventDescription]');
let arrayToTest = {}
arrayToTest.title = eventTitle;
arrayToTest.date = eventDate;
arrayToTest.time = eventTime;
arrayToTest.description = eventDescription;
arrayToTest.error = '';
var errorSpans = document.getElementsByClassName('errorSpan');
while(errorSpans[0]) {
errorSpans[0].parentNode.removeChild(errorSpans[0]);
}
for (const key in arrayToTest) {
if (arrayToTest[key].value !== '') {
arrayToTest[key].style.border = "";
} else {
event.preventDefault();
let errorSpan = document.createElement('span');
let message = 'Ce champs est obligatoire'
errorSpan.innerText = message ;
errorSpan.className = "errorSpan";
errorSpan.style.color = "red";
arrayToTest[key].style.border = "3px solid red";
arrayToTest[key].after(errorSpan);
}
}
},
};
推荐阅读
- java - Java 在 Sublime Text 3 中编译
- spring-data-mongodb - Spring Boot 和 Mongo DB:仅获取最新版本的 Document
- python - 如何去除条形图周围的空白
- admin-on-rest - 使用翻译功能时,Polyglot 似乎不起作用
- python - 如何获得一个句子的热编码?
- error-handling - 在 F# 中“合并”有区别的联合?
- angular - 从源访问 XMLHttpRequest
- karate - 将 Json 响应导出到空手道框架中的文件
- python - 有没有更好的方法来围绕列表编写这个循环,这样它就不会出现内存错误?
- git - 在 git 远程之间更改提交用户