javascript - 检查空输入和显示消息的简单表单验证
问题描述
我正在尝试一个简单的表单验证,如果输入字段为空,用户将看到一条消息,要求填写任何为空的字段。
我能够循环查找哪些字段为空并显示一条消息,但该消息只会显示循环的最后一个输入字段。如何获取消息以显示所有为空的输入字段?
HTML:
<label>Name</label>
<input class=formInput" name="name" />
<label>Email</label>
<input class=formInput" name="email" />
<label>Message</label>
<textarea class=formInput" name="message" />
<span id="fail-message"></span>
JS:
let inputFields = document.getElementsByClassName('formInput');
for (var i = 0; i < inputFields.length; i++) {
if (inputFields[i].value === '') {
document.querySelector('#fail-message').innerHTML =
'Please fill out ' +
inputFields[i].getAttribute('name') +
' field(s)';
}
}
这当前输出“请填写消息字段”
假设全部为空,我希望它输出“请填写姓名、电子邮件和消息字段”
解决方案
每次找到空字段时,您的代码都会完全覆盖 innerHTML。相反,您应该做的是保留所有空字段的数组,然后在循环之后只编写一次 innerHTML 以及它找到的字段列表。
let inputFields = document.getElementsByClassName('formInput');
const emptyFieldNames = [];
for (var i = 0; i < inputFields.length; i++) {
if (inputFields[i].value === '') {
emptyFieldNames.push(inputFields[i].getAttribute('name'));
}
}
if (emptyFieldNames.length > 0) {
document.querySelector('#fail-message').innerHTML = 'Please fill out the following fields: ' + emptyFieldNames.join(', ');
}
推荐阅读
- r - 您可以使用 dplyr cross() 来遍历成对的列吗?
- python - 锁定文本文件并在 python 代码中解锁
- nativescript - 环境上下文中的“const”初始值设定项必须是字符串或数字文字或文字枚举引用
- python - 修改python tkinter treeview中选中行的标签
- machine-learning - 为什么转换器不在每一层都使用位置编码?
- algorithm - 如果在按元素中位数方法选择枢轴时中位数不在数组中,则快速排序
- piranha-cms - 自定义块图标未出现
- c# - 使用部分文本提取整行文本
- python - 从文件夹循环读取 Panda 中的 .dat 文件的问题
- progressive-web-apps - 如何将我的服务工作人员工作设置为 cloudflare 的工作人员?