2016-02-13 2 views
0

Я использую проверку jQuery с помощью пульта дистанционного управления для проверки наличия адреса электронной почты. Не спрашивайте меня, почему, но мне нужно перенаправить на новую страницу, если совпадение найдено в базе данных (false), в противном случае они должны иметь возможность использовать форму в обычном режиме.Остановить jQuery Ajax Успех от предотвращения отправки формы

Этот код отлично работает. ЗА ИСКЛЮЧЕНИЕМ: если он возвращает true (это означает, что он не перенаправляется), кнопка отправки формы ничего не делает. Я не вижу никаких атрибутов, назначенных как отключенные, но представление формы предопределено. Если я не наберу ничего на входе электронной почты, это позволит мне нажать кнопку.

 rules: { 
      fullname: "required", 
      email: { 
       required: true, 
       email: true, 
       remote: { 
        url: "validate-email.php", 
        type: "post", 
        success: function(response) { 
         if(response === false){ 
          window.location.href = 'new-page.html'; 
         } 
        }, 
       }, 
      }, 

      }, 

раз я удаляю успеха: раздел, представление формы работает нормально, так очевидно, что-то делать с тем, что я сделал там ... Спасибо заранее за вашу помощь!

+0

Да, поскольку я попытался объяснить [мой комментарий] (http://stackoverflow.com/questions/35372364/jquery-validate-remote-redirect-page-on-false#comment58450895_35372364) по [вашему другому вопросу] (http://stackoverflow.com/q/35372364/594235) ... используйте код на стороне сервера, чтобы выполнить перенаправление на 'false'. По умолчанию, когда 'true' отсылается обратно от PHP, правило' remote' автоматически выполняется. Используя опцию 'success', вы нарушаете эту стандартную функциональность. – Sparky

+0

Я создал новый вопрос, потому что думал, что это будет путать. Я попытался добавить его в php-скрипт и ничего не сделал. Обращение к простому заголовку (Location: 'new-page.html'); правильно? –

+0

Плагин validation объединяет ваши опции 'remote:' в свой вызов '$ .ajax'. Он имеет свою функцию 'success:', которая обрабатывает ответ так, чтобы он мог отметить элемент действительным или недействительным. Но ваша функция 'success' переопределяет это, поэтому проверка не работает. – Barmar

ответ

0

Не уверен, что это лучшее решение, но я был в состоянии исправить это с помощью этого:

   remote: { 
        url: "validate-email.php", 
        type: "post", 
        complete: function(data) { 
         if(data.responseText == "false"){ 
          window.location.href = 'new-page.php'; 
         }else{ 
          return response; 
         } 
        }, 

Спасибо за вашу помощь!

Смежные вопросы