Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2015, 15:21
Интересующийся
Отправить личное сообщение для DmitriSpartak Посмотреть профиль Найти все сообщения от DmitriSpartak
 
Регистрация: 05.05.2013
Сообщений: 12

Предотвратить отправку формы и перезагрузку страницы
При заполнении формы, javascrip проверяет поля на пустоту, если поля пустые, выдается алерт.
Проблема в том, что форма находится внизу страницы, а после этого страница перезагружается, т.е. пользователь снова попадает в самое начала.
я так понимаю, что данные попадают в обработчик php и из-за этого страница и перезагружается.
Скажите, как предотвратить отправку формы, в случае если инпуты не проходят проверку в функции cheker2()

Форма:
<form action="/" method="POST">
	<p><label>Ваше имя:<br/><input id="name2" name="name" type="text"/></label></p>
	<p><label>Ваш телефон:<br/><input name="tel" id="tel2" type="text"/></label></p>
	<p id="button_p"><input name="button_f" value="ok" type="image" src="img/okbutton.png" alt="ОК" onClick="cheker2()"></p>
</form>

Код javascript:
function cheker2()
{
	var tel2 = document.getElementById("tel2");
	var name2 = document.getElementById("name2");
	if(tel2.value=='' || name2.value=='')
	{
	  alert("Заполните все поля");
	}
}
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2015, 17:04
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

DmitriSpartak, можно так:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <form action="/" method="POST">
    <p><label>Ваше имя:<br/><input id="name2" name="name" type="text"/></label></p>
    <p><label>Ваш телефон:<br/><input name="tel" id="tel2" type="text"/></label></p>
    <p id="button_p">
      <input name="button_f" value="ok" type="image" src="img/okbutton.png" alt="ОК">
    </p>
  </form>
  
  <script>
    var form = document.forms[0];
    
    form.addEventListener('submit', function(e) {
      var inpElems = form.querySelectorAll('input[type="text"]'),
          result = true;
      
      for(var i = 0; i < inpElems.length; i++) {
        if( !inpElems[i].value.match(/^\S+/) ) {
          result = false;
          e.preventDefault();
        }
      }
      
      if(!result) alert('Заполните все поля!');
    });
  </script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2015, 20:13
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

DmitriSpartak,
function cheker2()
{
	var tel2 = document.getElementById("tel2");
	var name2 = document.getElementById("name2");
	if(tel2.value=='' || name2.value=='')
	{
	  alert("Заполните все поля");
          return false;
	}
}
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2015, 21:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Выкинуть вот эту шнягу type="image" и вообще никаких кнопок там не рисовать и никуда оно никогда не уйдет без вашего согласия. Кнопку нарисовать вот так:

<a class="btn-submit" onclick="validate(this)">Отправить</a>
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2015, 21:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Совет хозяйке. Поле телефона сделайте type="tel" и еще один - поменяйте пост на гет. Для таких примитивных задач POST не нужен. Тогда вам и форма не нужна будет (в общем и для post она не нужна такая). Нарисовали два поля в диве, кнопку а - и скриптом накрыли все.

Последний раз редактировалось kostyanet, 29.05.2015 в 21:27.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 16:37
Отправка формы при загрузке страницы Shimmy AJAX и COMET 4 26.11.2013 14:51
Генерация формы на стороне клиента при загрузки страницы Corey Общие вопросы Javascript 2 17.09.2013 17:13
Заблокировать отправку формы gunsoy Общие вопросы Javascript 3 16.02.2012 12:30
как прекратить отправку формы? magistr_bender Events/DOM/Window 3 17.12.2008 22:37