Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Валидация. Проверка и вызов функции (https://javascript.ru/forum/misc/73462-validaciya-proverka-i-vyzov-funkcii.html)

mishapod 17.04.2018 19:43

Валидация. Проверка и вызов функции
 
Я хочу вызвать функцию только в том случае, если форма валидна.

Проверка корректно работает, но я не могу правильно вызвать функцию addUser(). addUser работает, но он зациклен, при следующим вызове срабатывает 2 раза, потом 5 и так далее.

И еще форма должна отправляться только в addUser(). По отдельности они работают правильно, а вместе нет.

Могут быть несколько телефонов.


//code
   if (lastName.value.match(letters)) {    
        for(var i = 0; i < phones.length; i++){
          if (!phones[i].value.match(digts)) {
            error.innerHTML = 'Only digits';
            frm.insertBefore(error, phones[i]);
            errorMessage = "false";
            phones[i].focus();
           //проверка
            if(phones[phones.length - 1].value != '') {
              addUser();
            };
            break;
          }
        }
      } else {
        if(user.value == ''){
            //code
        }
           errorMessage = "false";
        }
          if (errorMessage !== "") {
              event.preventDefault();
          }
        }

----------

    function addUser(){
        $('#registration').submit(function(event) {
          alert(12);
          event.preventDefault();
           //code
          var data = 'phones=' + JSON.stringify(arrUserInfo);
          $.ajax({
            //code
          });
        });
      }

laimas 17.04.2018 19:46

А зачем вызов функции в цикле? Проверьте все телефоны, если среди них нет ошибок, тогда отправка. То есть вызов функции только по результату проверки.

mishapod 17.04.2018 20:17

А где проверку сделать?

laimas 17.04.2018 20:32

Цитата:

Сообщение от mishapod
А где проверку сделать?

Как где, вот она у вас

if (lastName.value.match(letters)) {
for(var i = 0; i < phones.length; i++){
if (!phones[i].value.match(digts)) {

Но это

//проверка
if(phones[phones.length - 1].value != '') {
addUser();
};

из цикла убрать, и либо отмечать все поля с ошибками, либо прерывать цикл на первом поле с ошибкой.... но иметь признак какой либо результата проверки, отправляя запрос только в том случае, если он true.


Часовой пояс GMT +3, время: 18:31.