Required и onclick


Итак, вы создали на своем сайте форму обратной связи, чтобы посетители могли отправлять вам сообщения. Также вы добавили в неё атрибут required – чтобы эти же посетители не могли отправлять незаполненную форму с пустым полями. Время шло, и вы, согласно новым веяниям, сделали отправку вашей формы без перезагрузки страницы, с помощью ajax и обработки события onclick. И вдруг заметили, что required перестал работать. В чем же дело?

Дело в том, что форму вы сейчас отправляете не с помощью HTML, а с помощью JS, поэтому не происходит вызова метода submit(), в котором, собственно говоря, и проверяется корректность заполнения полей формы. При отправке с помощью JS, действия по проверке формы пропускаются, поэтому их нужно реализовывать самостоятельно на JS – с помощью checkValidity(). Рассмотрим конкретный пример.

HTML-код формы:

<form id="contact-form" name="contact-form" action="_self">
Сообщение:<br />
<textarea type="text" id="ftext" name="ftext" rows="4"  required > <textarea>
<button type="submit" id="submit" onClick="saveform (this.form); return false;">Отправить</button>
</form>
Скрипт по отправке формы и проверяющий заполнение полей (замена required):

function saveform (data)
{
  var isValidForm = document.forms['contact-form'].checkValidity();
    if (isValidForm)
    {
	var ftext = data.ftext.value;
    $.post('saveser.php',{ ftext:ftext},function(data){ },'json');	
	window.alert('Спасибо! Ваше сообщение уже у нас в ящике!');
    }
    else
    {
    window.alert('Вы заполнили не все поля!');
    }
}
Вот так можно заменить required на JS. Я привел сразу же пример отправки данных ajax-ом в файл saveser.php, если же у вас реализована своя функция, то замените её на вот эту строку:

document.forms['contact-form'].submit();
Также стоит отметить, что если полей в форме несколько (а так оно обычно и есть), то можно реализовать проверку отдельных полей. Можно также выводить сообщение не встроенным алертом, а придумать свое окно – возможностей масса. Если вам требуется реализовать что-то подобное на своем сайте, то вы всегда можете обратиться к мне – up777up@yandex.ru – за небольшую плату вам будет оказана быстрая помощь по любым проблемам с сайтом.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, javascript, валидация, html, скрипты для сайта




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



BrowseForFolder и MTP-устройства
SSR, стоит ли вам его использовать?
Узнать Google Client ID с помощью JS и PHP