Проверка полей
Всем доброго времени суток. Сразу с кажу, что в JS я не сильно силен, собственно по этому и прошу вашей помощи =)
И так я описываю скрипт проверки формы на заполнения. Сама форма : <form action="....." method="post" enctype="multipart/form-data" name="add_form" onsubmit="return check_fields();"> отработка JSом:
function check_fields(){obs='document.add_form.';
s='zagolovok'; ob=eval(obs+s);value=ob.value;if(value==''){ob.focus();ob.className="err";return false;}
else ob.className="";
s='hide_phone'; ob=eval(obs+s);value=ob.value;if(value=='1'){
s='contacts'; ob=eval(obs+s);value=ob.value;if(value==''){ob.focus();ob.className="err";return false;}
}
else ob.className="";
s='type';
ob=eval(obs+s);
value=ob.value;
if(value=='0'){ob.focus();ob.className="err";return false;}
else ob.className="";
s='id_category';
ob=eval(obs+s);
value=ob.value;
if(value=='no'){ob.focus();ob.className="err";return false;}
else ob.className="";
s='text';
ob=eval(obs+s);
value=ob.value;
if(value==''){ob.focus();ob.className="err";return false;}
else ob.className="";
s='video';
ob=eval(obs+s);
value=ob.value;
if(value!=''){
var valid_str=value.match(/youtube\.com\/watch\?v\=[0-9a-z-_]{11}/gi);
var valid_length=value.length;
if(valid_str===null || valid_str=='undefined' || valid_str=='' || valid_length>50 || valid_length<24){
alert('Link to video is not correct');
ob.focus();
ob.className="err";
valid_str='';
return false;
}
else ob.className="";
}
s='autor';
ob=eval(obs+s);
value=ob.value;
if(value==''){ob.focus();ob.className="err";return false;}
else ob.className="";
s='securityCode';
ob=eval(obs+s);
if(ob){value=ob.value;if(value==''){ob.focus();ob.className="err";return false;}
else ob.className="";}
return true;}
Все бы нечего, но не работает проверка чекбокса и текстового поля. (hide_phone и contacts) задача такова: При подтверждении проверяем JSом: Если человек прячет телефон(ставит галочку) то делаем проверку текстового поля, если поле пустое, то выделяем его. Если нет, то пропускаем. код чекбокса: <input type="checkbox" name="hide_phone" value="1" /> В условии JSа написано if(value=='1')... такое ощущение, что чекбокс всегда отправляет значение 1, ставь его, не ставь, все время выделяем поле контакты. Если в JS выставить не 1, а любое другое, то пропускает. И так собственно вопрос, в чем косяк ? Целое утро бьюсь... :help: |
Во-первых, eval - это зло, во-вторых использование переменных без var(т.е. как глобальные тоже зло).
var obs = document.add_form; var ob = obs[s]; Для проверки чекбокса нужно использовать
if ( ob.checked ) {//чекбокс отмечен
} else {
}
|
Спасибо работает.
Но хотелось бы разобраться. Почему ob.checked, а не value=='1', было бы ясно, если бы у меня в коде чекбокса не стояло value="1", но ведь оно стоит, и бокс должен передавать еденицу при выборе. |
Цитата:
|
| Часовой пояс GMT +3, время: 06:59. |