Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2018, 19:43
Интересующийся
Отправить личное сообщение для mishapod Посмотреть профиль Найти все сообщения от mishapod
 
Регистрация: 01.02.2017
Сообщений: 20

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

Проверка корректно работает, но я не могу правильно вызвать функцию 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
          });
        });
      }
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2018, 19:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А зачем вызов функции в цикле? Проверьте все телефоны, если среди них нет ошибок, тогда отправка. То есть вызов функции только по результату проверки.
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2018, 20:17
Интересующийся
Отправить личное сообщение для mishapod Посмотреть профиль Найти все сообщения от mishapod
 
Регистрация: 01.02.2017
Сообщений: 20

А где проверку сделать?
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2018, 20:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое подключение JS и вызов функции Paqwerty Events/DOM/Window 1 25.04.2017 16:33
О видимости функции внутри другой функции, рекурсивный вызов DanK Node.JS 1 24.08.2016 20:32
Вызов функции страницы из расширения chrome nontxt Events/DOM/Window 0 09.02.2015 10:42
Вызов функции из функции с параметрами cript Events/DOM/Window 13 18.01.2015 14:57
Вызов функции из скрытого iframe Beer75 Общие вопросы Javascript 2 05.06.2013 21:36