Журнал консоли для foreach javascript не отображался - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался поработать над проверкой в ​​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 голосов
/ 10 апреля 2020

Вы возвращаетесь слишком рано, поэтому оно никогда не достигнет ваших консолей. Вы сосредотачиваетесь на нескольких полях.

  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;
}
...