Проверка полей
Всем доброго времени суток. Сразу с кажу, что в 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, время: 18:38. |