Javascript 用if和else检查for循环中的所有值

Javascript 用if和else检查for循环中的所有值,javascript,Javascript,我使用的函数是,如果用户将任何输入留空,那么它应该打印错误消息,否则应该提交 我在测试下面的代码,只针对名称输入,如果输入为空,它会显示错误,否则它会提交 let submitFORM=document.forms[0][4].addEventListener(“单击”,val); 设name=document.forms[0][0]; let error=document.getElementById(“error”); 函数val(){ 如果(!name.value){ error.inn

我使用的函数是,如果用户将任何输入留空,那么它应该打印错误消息,否则应该提交

我在测试下面的代码,只针对名称输入,如果输入为空,它会显示错误,否则它会提交

let submitFORM=document.forms[0][4].addEventListener(“单击”,val);
设name=document.forms[0][0];
let error=document.getElementById(“error”);
函数val(){
如果(!name.value){
error.innerHTML=“error”;
返回false;
}否则{
document.forms[0]。提交();
}

}
据我所见,您提交得太快了,应该首先测试for循环中的每个输入,一旦找到缺少的值,就将布尔值设置为false。只有这样,在循环外部,检查此布尔值是否设置为true,如果设置为true,则提交。

从我看到的情况来看,您提交得太快了,您应该首先测试for循环中的每个输入,一旦找到缺少的值,就将布尔值设置为false。然后,在循环外部,检查此布尔值是否设置为true,如果设置为true,则提交。

HTML具有
必需的属性来完成此操作。如果您将任何输入设置为必需,那么如果这些字段为空,现代浏览器将不允许您提交表单

<input type="text" name="name" required="required">

您希望从javascript执行此操作有什么具体原因吗

如果仍要使用解决方案,则需要将“提交”部分调整为不在循环中,如下所示:

let submitFORM = document.forms[0][4].addEventListener("click", val);
let name = document.forms[0][0];
let error = document.getElementById("error");
function val() {
    let allinputs = document.forms[0].querySelectorAll('input');
    let item = "";
    let shouldSubmit = true;
    for(let i = 0; i < allinputs.length - 1; i++){
        if(!allinputs[i].value){
            item += "your " + allinputs[i].getAttribute('name') + " shouldn't be blank !";
            shouldSubmit = false;
        }
    }
    if (shouldSubmit) {
        document.forms[0].submit();
    }           
    error.innerHTML = item;
}
const invalidInputs = allInputs.map(input => !input.value);
invalidInputs.forEach((input) => {
  item += "your " + input.getAttribute('name') + " shouldn't be blank !";
});

if (invalidInputs.length === 0) {
  document.forms[0].submit();
} 
let submitFORM=document.forms[0][4].addEventListener(“单击”,val);
设name=document.forms[0][0];
let error=document.getElementById(“error”);
函数val(){
让allinputs=document.forms[0].querySelectorAll('input');
让项目=”;
let shouldSubmit=真实;
for(设i=0;i
HTML具有
required
属性来完成此操作。如果您将任何输入设置为必需,那么如果这些字段为空,现代浏览器将不允许您提交表单

<input type="text" name="name" required="required">

您希望从javascript执行此操作有什么具体原因吗

如果仍要使用解决方案,则需要将“提交”部分调整为不在循环中,如下所示:

let submitFORM = document.forms[0][4].addEventListener("click", val);
let name = document.forms[0][0];
let error = document.getElementById("error");
function val() {
    let allinputs = document.forms[0].querySelectorAll('input');
    let item = "";
    let shouldSubmit = true;
    for(let i = 0; i < allinputs.length - 1; i++){
        if(!allinputs[i].value){
            item += "your " + allinputs[i].getAttribute('name') + " shouldn't be blank !";
            shouldSubmit = false;
        }
    }
    if (shouldSubmit) {
        document.forms[0].submit();
    }           
    error.innerHTML = item;
}
const invalidInputs = allInputs.map(input => !input.value);
invalidInputs.forEach((input) => {
  item += "your " + input.getAttribute('name') + " shouldn't be blank !";
});

if (invalidInputs.length === 0) {
  document.forms[0].submit();
} 
let submitFORM=document.forms[0][4].addEventListener(“单击”,val);
设name=document.forms[0][0];
let error=document.getElementById(“error”);
函数val(){
让allinputs=document.forms[0].querySelectorAll('input');
让项目=”;
let shouldSubmit=真实;
for(设i=0;i
可以尝试检查单个if语句中的所有输入字段

if(!t[0].value && !t[1].value && !t[2].value){}

类似这样的内容

可以尝试检查单个if语句中的所有输入字段

if(!t[0].value && !t[1].value && !t[2].value){}

类似这样的情况是因为,您在
内调用submit以进行
循环,在第一个有效输入时将调用submit

您可以像这样重构:

let submitFORM = document.forms[0][4].addEventListener("click", val);
let name = document.forms[0][0];
let error = document.getElementById("error");
function val() {
    let allinputs = document.forms[0].querySelectorAll('input');
    let item = "";
    let shouldSubmit = true;
    for(let i = 0; i < allinputs.length - 1; i++){
        if(!allinputs[i].value){
            item += "your " + allinputs[i].getAttribute('name') + " shouldn't be blank !";
            shouldSubmit = false;
        }
    }
    if (shouldSubmit) {
        document.forms[0].submit();
    }           
    error.innerHTML = item;
}
const invalidInputs = allInputs.map(input => !input.value);
invalidInputs.forEach((input) => {
  item += "your " + input.getAttribute('name') + " shouldn't be blank !";
});

if (invalidInputs.length === 0) {
  document.forms[0].submit();
} 

这是因为,您在
内为
循环调用submit,将在第一个有效输入时调用submit

您可以像这样重构:

let submitFORM = document.forms[0][4].addEventListener("click", val);
let name = document.forms[0][0];
let error = document.getElementById("error");
function val() {
    let allinputs = document.forms[0].querySelectorAll('input');
    let item = "";
    let shouldSubmit = true;
    for(let i = 0; i < allinputs.length - 1; i++){
        if(!allinputs[i].value){
            item += "your " + allinputs[i].getAttribute('name') + " shouldn't be blank !";
            shouldSubmit = false;
        }
    }
    if (shouldSubmit) {
        document.forms[0].submit();
    }           
    error.innerHTML = item;
}
const invalidInputs = allInputs.map(input => !input.value);
invalidInputs.forEach((input) => {
  item += "your " + input.getAttribute('name') + " shouldn't be blank !";
});

if (invalidInputs.length === 0) {
  document.forms[0].submit();
}