Предотвратить отправку формы и перезагрузку страницы
При заполнении формы, 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("Заполните все поля");
}
}
|
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>
|
DmitriSpartak,
function cheker2()
{
var tel2 = document.getElementById("tel2");
var name2 = document.getElementById("name2");
if(tel2.value=='' || name2.value=='')
{
alert("Заполните все поля");
return false;
}
}
|
Выкинуть вот эту шнягу type="image" и вообще никаких кнопок там не рисовать и никуда оно никогда не уйдет без вашего согласия. Кнопку нарисовать вот так:
<a class="btn-submit" onclick="validate(this)">Отправить</a> |
Совет хозяйке. Поле телефона сделайте type="tel" и еще один - поменяйте пост на гет. Для таких примитивных задач POST не нужен. Тогда вам и форма не нужна будет (в общем и для post она не нужна такая). Нарисовали два поля в диве, кнопку а - и скриптом накрыли все.
|
| Часовой пояс GMT +3, время: 10:10. |