foreach javascript的控制台日志未显示

时间:2020-04-10 16:57:40

标签: javascript forms validation

我一直在尝试使用javascript进行一些验证,这只是一个简单的验证。但是,错误不会显示在控制台日志中。如果所有输入均正确,它将显示“注册成功文本”,但是在另一侧,它将不显示任何错误文本。但是它仍然可以以某种方式使焦点功能输入错误,只有控制台中未显示的错误文本。我感到很困惑。你们能帮我吗?我会很感激的。

function validate(name, uname, email, passw, confpassw, region, gender, termss){
  let error = [];

  if(name.value === ''){
    error.push("Name is required.");
    name.focus();
    return false;
  } 

  if(name.value.length < 4){
    error.push("Length of name is less than 4 characters.");
    name.focus();
    return false;
  }

  if(uname.value === ''){
    error.push("Username is required.");
    uname.focus();
    return false;
  }

  if(uname.value.length < 8 || uname.value.length > 14){
    error.push("Length of username must between 8-14 characters.");
    uname.focus();
    return false;
  }

  if(email.value === ''){
    error.push("Email is required.");
    email.focus();
    return false;
  }

  if((email.value.indexOf('@') == -1 && email.value.indexOf('.') == -1) ||
    (!email.value.endsWith('gmail.com') && (!email.value.endsWith('gmail.co.id')))
    || email.value.indexOf('@')+1 === email.value.indexOf('.')){
    error.push("Email is not valid.");
    return false;
  } 

  if(passw.value === ''){
    error.push("Password is required.");
    passw.focus();
    return false;
  }

  if(confpassw.value === ''){
    error.push("Confirmation Password is required.");
    confpassw.focus();
    return false;
  }

  if(passw.value != confpassw.value){
    error.push("The password didn't match.");  
    passw.focus();
    confpassw.focus();
    return false;
  }

  if(region.value == 0){
    error.push("Region is not selected");
    region.focus();
    return false;
  }

  if(gender.value == 0){
    error.push("Gender is not selected");
    gender.focus();
    return false;
  }

  if(!termss.checked){
    error.push("Please agree to the terms and conditions if you want to proceed.");
    termss.focus();
    return false;
  }

  if(error.length == 0){
    alert("Registration Success!");
  } else{
    for(var i=0; i<error.length; i++){
      console.log(error.length[i]);
    };
  }
}

1 个答案:

答案 0 :(得分:0)

您返回得太早,因此它永远不会到达您的控制台。您正在关注多个领域。

  if(passw.value != confpassw.value){
    error.push("The password didn't match.");  
    passw.focus();
    confpassw.focus();
    return false;
  }

您也正在使用console.log(error.length[i]);而不是console.log(error[i]);

function validate(name, uname, email, passw, confpassw, region, gender, termss){
  let error = [];
  let firstFailedField = null;
  const setFirstFailedField = (field) => {
    if (!firstFailedField) firstFailedField = field;
  };

  if(name.value === ''){
    error.push("Name is required.");
    setFirstFailedField(name);
  } 

  if(name.value.length < 4){
    error.push("Length of name is less than 4 characters.");
    setFirstFailedField(name);
  }

  if(uname.value === ''){
    error.push("Username is required.");
    setFirstFailedField(uname);
  }

  if(uname.value.length < 8 || uname.value.length > 14){
    error.push("Length of username must between 8-14 characters.");
    setFirstFailedField(uname);
  }

  if(email.value === ''){
    error.push("Email is required.");
    setFirstFailedField(email);
  }

  if((email.value.indexOf('@') == -1 && email.value.indexOf('.') == -1) ||
    (!email.value.endsWith('gmail.com') && (!email.value.endsWith('gmail.co.id')))
    || email.value.indexOf('@')+1 === email.value.indexOf('.')){
    error.push("Email is not valid.");
    setFirstFailedField(email);
  } 

  if(passw.value === ''){
    error.push("Password is required.");
    setFirstFailedField(passw);
  }

  if(confpassw.value === ''){
    error.push("Confirmation Password is required.");
    setFirstFailedField(confpassw);
  }

  if(passw.value != confpassw.value){
    error.push("The password didn't match.");  
    setFirstFailedField(confpassw);
  }

  if(region.value == 0){
    error.push("Region is not selected");
    setFirstFailedField(region);
  }

  if(gender.value == 0){
    error.push("Gender is not selected");
    setFirstFailedField(gender);
  }

  if(!termss.checked){
    error.push("Please agree to the terms and conditions if you want to proceed.");
    setFirstFailedField(termss);
  }

  if(error.length == 0){
    alert("Registration Success!");
    return true;
  }
  error.forEach((err) => (console.log(err)));
  if (firstFailedField && typeof firstFailedField.focus === 'function') firstFailedField.focus();
  return false;
}