Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт проверки полей почтовой формы (https://javascript.ru/forum/misc/55803-skript-proverki-polejj-pochtovojj-formy.html)

Ultor 15.05.2015 08:04

Скрипт проверки полей почтовой формы
 
Помогите пожалуйста! Что и куда нужно вставить, чтобы происходила проверка полей формы в следующем скрипте (чтобы пустые поля нельзя было отправить):

document.getElementById('feedback-form1').onsubmit = function(){
  var http = new XMLHttpRequest();
  http.open("POST", "contact1.php", true);
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.send("nameFF1=" + this.nameFF1.value + "&contactFF1=" + this.contactFF1.value);
  http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
      swal(http.responseText + ', Ваша заявка принята!', 'Мы свяжемся с Вами в ближайшее время.\nБлагодарим за обращение!', 'success');
    }
  }
  http.onerror = function() {
    swal('Ошибка!', 'Извините, данные не были переданы', 'error');
  }
  return false;
}


Пробовал добавлять this.contactFF1.value !== "" && this.nameFF1.value !== "" , но, очевидно, что в http.onreadystatechange оно не может работать... :help:

laimas 15.05.2015 08:32

<input required /> и браузер сам не разрешит отправить форму с пустым полем. А так как обмен с сервером асинхронный, и сервер обязан проверять данные не зависимо от того проверялось ли на клиенте, то старые браузеры не поддерживающие required получат от сервера ошибку.

Ultor 15.05.2015 09:01

laimas,
Если было бы всё так просто... Но сайт у меня написан на xhtml, поэтому html 5 значения не срабатывают.

jsnb 15.05.2015 09:12

Цитата:

Сообщение от Ultor
Пробовал добавлять this.contactFF1.value !== "" && this.nameFF1.value !== "" , но, очевидно, что в http.onreadystatechange оно не может работать...

Так а причем здесь onreadystatechange? Пиши в обработчике onsubmit условие проверки заполненности полей. Что-нибудь типо:
if (this.contactFF1.value === "" || this.nameFF1.value === "") {
  return false;
}

И вставляй это в начало обработчика до отправки аякс запроса.


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