Как проверить форму, используя созданные мной функции - PullRequest
0 голосов
/ 03 июня 2019

Я создал функции для проверки моей формы. Но я хочу, чтобы все они запускались сразу, когда я нажимаю кнопку отправки. Итак, у меня есть функция formValidate, а затем у меня есть firstNameValidate, lastNameValidate и т. Д.

У меня вопрос: как мне создать функцию formValidate для запуска имеющихся у меня функций, но ТОЛЬКО отправить форму, если все они верны?

function firstNameValidate() {
    // Making sure that the firstname input is not blank
    if (firstName.value.length == 0) {
        // If the firstname input is blank, then return the error text below
        error.innerHTML = 'Please Enter a Valid First Name, Cannot be Blank';
        // Error text css class
        error.className = 'error';
        // Making sure that the browser window focuses on the error
        firstName.focus();
        // Does not let the browser submit the form
        //  this statement makes sure that the input has only letters
        return false;
    } else if (!firstName.value.match(letter)) {
        // // If the input has something other then numbers, show this error.
        error.innerHTML =
            'Please Enter a Valid First Name, Cannot contain characters(!@#) or numbers';
        // // error text css class
        error.className = 'error';
        // browser window focuses on error
        firstName.focus();
        // Form does not submit
        return false;
    }
    if (firstName.value.length > 0 && firstName.value.match(letter)) {
        error.className = '';
        error.innerHTML = '';
        return true;
    }
}

Я могу получить имя и фамилию для проверки, однако, если один из них заполнен, он отправляет форму. Поэтому возвращение true и возвращение false я считаю неправильным.

Ответы [ 2 ]

1 голос
/ 03 июня 2019
function firstNameValidate() {

  if (firstName.value.length == 0) {
    error.innerHTML = 'Please Enter a Valid First Name, Cannot be Blank';
    error.className = 'error';
    firstName.focus();
    return false;
  }
  if (!firstName.value.match(letter)) {
    error.innerHTML = 'Please Enter a Valid First Name, Cannot contain characters(!@#) or numbers';
    error.className = 'error';
    firstName.focus();
    return false;
  } else {
    //intended code goes here , or simply return true.
  }

}

Если вы хотите выполнить строгую проверку, запишите всю проверку в операторе if, а если все заполнено правильно, выполните правильный код в операторе else,

и вызов вышеупомянутой функции в форме при отправке или при нажатии кнопки, она сделает всю работу.

Надеюсь, это поможет .. !!

0 голосов
/ 03 июня 2019

Но я хочу, чтобы все они запускались одновременно, когда я нажимаю кнопку отправки

Так вы говорите, что хотите, чтобы все они работали параллельно.Попробуйте это,

    function formValidate()
    {
        let promises = [];
        promises.push(new Promise((resolve,reject) ->resolve(firstNameValidator()));
        promises.push(new Promise((resolve,reject) ->resolve(lastNameValidator()));        
        promises.push(new Promise((resolve,reject) ->resolve(otherValidator()));

        Promise.All(promises).then((checks) ->{checks.forEach((check) ->{
                if(!check)return false;}});
        return true;
}

Это отключит все функции проверки сразу и вернется, когда все они будут закончены.Он вернет false, если какая-либо из функций вернет false.

Если вы переместите отображаемое сообщение об ошибке в функцию проверки, отобразятся все сообщения об ошибках.Например

function firstNameValidator()
{
   if(name == null){
        error.innerHTML += 'Please Enter a Valid First Name, Cannot be                       
        Blank';
        error.className = 'error';
        return false;
   }
   return true;
 }
...