Проверка заполнения полей формы
Добрый день! Имеется форма и простейший скрипт проверки:
<form onsubmit="return checkForm(this)" action="index.php" method="post">
<div id="contact-form">
<div>
<label for="fio" class="label">Ваше имя</label>
<input type="text" value="" name="fio" id="fio" class="w-460" />
<p id='err_fio' class='error'></p>
</div>
<div>
<label for="phone" class="label">Телефон</label>
<input type="text" value="" name="phone" id="phone" class="w-460" />
</div>
<input id="submit-form" type="submit" value="Оформить заказ" />
</div>
</form>
<script type="text/javascript">
function checkForm(form){
if (document.getElementById('fio').value=="") {
document.getElementById('err_fio').innerHTML='Введите имя';
return false;
};
return true;
};
</script>
При нажатии кнопки Submit происходит отправка формы без проверки заполнения поля "Ваше имя" с id="fio". Пример скрипта взят с форума. Облазила аналогичные темы, но причину по-прежнему не могу найти. Прошу помочь. |
Цитата:
|
Ок, допустим, что именно при таком раскладе не происходит (к сожалению, не могу уточнить информацию, так как редактирую действующий сайт в данный момент результаты заполнения формы отсылаются на чужой e-mail).
Тогда вопрос следующий: почему не подгружается нужная информация об ошибке в искомый div, а происходит перезагрузка страницы? |
kefalia,
всё подгружается - информация об ошибке в диве ищите неправильные теги, форма в форме, одинаковые id.
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<form onsubmit="return checkForm(this)" action="index.php" method="post">
<div id="contact-form">
<div>
<label for="fio" class="label">Ваше имя</label>
<input type="text" value="" name="fio" id="fio" class="w-460" />
<p id='err_fio' class='error'></p>
</div>
<div>
<label for="phone" class="label">Телефон</label>
<input type="text" value="" name="phone" id="phone" class="w-460" />
</div>
<input id="submit-form" type="submit" value="Оформить заказ" />
</div>
</form>
<script type="text/javascript">
function checkForm(form){
if (document.getElementById('fio').value=="") {
document.getElementById('err_fio').innerHTML='Введите имя';
return false;
};
return true;
};
</script>
</body>
</html>
|
Пересохранила файл еще раз, все заработало. Спасибо!
|
Доброй ночи :)
Пичаль заключается вот еще в чем:
<form onsubmit="return checkForm(this)" action="index.php" method="post">
<div id="contact-form">
<div>
<label for="fio" class="label">Ваше имя</label>
<input type="text" value="" name="fio" id="fio" class="w-460" />
<div id='err_fio' class='error'></div>
</div>
<div>
<label for="phone" class="label">Телефон</label>
<input type="text" value="" name="phone" id="phone" class="w-460" />
<div id='err_phone' class='error'></div>
</div>
<div>
<label for="email" class="label">E-mail</label>
<input type="text" value="" name="email" id="email" placeholder="Введите, чтобы получить копию заказа" class="w-460" />
</div>
<div id='err_email' class='error' style="color: red;"></div>
<input id="submit-form" type="submit" value="Оформить заказ" />
</div>
</form>
<script type="text/javascript">
function checkForm(form){
if (document.getElementById('email').value==""){
document.getElementById('err_email').innerHTML='Заполните данные о заказчике';
return false;
}
else {
document.getElementById('err_email').innerHTML="";
};
if (document.getElementById('fio').value==""){
document.getElementById('err_fio').innerHTML='Заполните данные о заказчике';
return false;
}
else {
document.getElementById('err_fio').innerHTML="";
};
if (document.getElementById('phone').value==""){
document.getElementById('err_phone').innerHTML='Заполните данные о заказчике';
return false;
}
else {
document.getElementById('err_phone').innerHTML="";
};
return true;
};
</script>
Подозреваю, что я что-то намудрила с условиями. Значение value передается только из поля с id="email", из остальных полей не передается ничего, даже если они заполнены. Причем, если повесить на каждый input событие onblur="alert(this.value)", то во всплывающем окне появляется значение, введенное в поле, а в функцию - не передается. То есть, сначала проверяется email (так было сделано с целью эксперимента), затем проверяется имя и, даже если поле заполнено, при повторном нажатии на submit, остается надпись "Заполните данные о заказчике". |
kefalia,
может опять чего несохранили -- работает всё |
Проблема решилась путем изменения id полей (видимо дублировались id):)
|
kefalia,
неувидел этой ошибки |
Уже все исправила (см. предыдущее сообщение) :) спасибо! :)
|
| Часовой пояс GMT +3, время: 14:42. |