выполнение скрипта останавливается после первого оператора
Сабж.
Есть HTML страница с формой: <FORM method="POST" name="addrepform" action="./add_rep.php" onsubmit="return CheckForm();"> <b>Заголовок объявления *</b><br> <INPUT type="text" name="title" maxlength="100" value=""> <b>Раздел каталога *</b><br> <select name="cat_id"> <option value="0">(выберите раздел)</option> <option value="1">Раздел 1</option> </select> <b>Ваш пол *</b><br> <select name="sex"> <option value="0">(Выберите)</option> <option value="1">Мужской</option> <option value="2">Женский</option> </select> <b>Ваша дата рождения *</b><br> <select name="rojd_dd"> <option value="0">(День)</option> <option value="1">1</option> </select> <select name="rojd_mm"> <option value="0">(Месяц)</option> <option value="1">1</option> </select> <select name="rojd_yyyy"> <option value="0">(Год)</option> <option value="2013">2013</option> </select> </FORM> подключен скрипт проверки на JS:
function CheckForm() {
// =========== 1. Проверка заполнения ЗАГОЛОВОК ОБЪЯВЛЕНИЯ
p_title=document.addrepform.title.value.toString();
if ((p_title.length==0) || (p_title=='Репетитор по ') ) {
alert('Не заполнено поле \"Заголовок объявления\".');
document.addrepform.title.focus();
return false;
} else if (p_title.length<5) {
alert('Значение поля \"Заголовок объявления\" не должно быть короче 5 символов.');
document.addrepform.title.focus();
return false;
};
// =========== 2. Проверка заполнения РАЗДЕЛ КАТАЛОГА
p_cat_id=document.addrepform.cat_id.value;
if (p_cat_id==0) {
alert('Не заполнено поле \"Раздел каталога\".');
document.addrepform.cat_id.focus();
return false;
};
// =========== 3. Проверка заполнения ВАШ ПОЛ
p_sex=document.addrepform.sex.value;
if (p_sex==0) {
alert('Не заполнено поле \"Ваш пол\".');
document.addrepform.sex.focus();
return false;
};
// =========== 4. Проверка заполнения ВАША ДАТА РОЖДЕНИЯ
p_rojd_dd=document.addrepform.rojd_dd.value;
p_rojd_mm=document.addrepform.rojd_mm.value;
p_rojd_yyyy=document.addrepform.rojd_yyyy.value;
if ( (p_rojd_dd==0) || (p_rojd_mm==0) || (p_rojd_yyyy==0) ){
alert('Не заполнено либо неверно заполнено поле \"Ваша дата рождения\".');
document.addrepform.p_rojd_dd.focus();
return false;
};
return true;
};
Почему-то после вывода алерта по Дате рождения происходит отправка самой формы (хотя должно быть возвращено false), т.е. по сути выполняется только первый оператор внутри условия if {} - т.е. выводится только алерт, а дальше буд-то бы выход из процедуры с true.... |
Короче сам разобрался уже :write:
Оказывается просто ошибка в строке установки фокуса (следствие копипасты). Было написано: document.addrepform.p_rojd_dd.focus(); Правильно так: document.addrepform.rojd_dd.focus(); Ибо имя поля другое (т.е. такого имени вообще не было), поэтому, видимо, и выскакивало из тела оператора if и шпарило дальше, возвращая true вместо верного false )))) |
| Часовой пояс GMT +3, время: 19:45. |