Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка полей (https://javascript.ru/forum/dom-window/17694-proverka-polejj.html)

Nitro_Generate 30.05.2011 10:25

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

nikita.mmf 30.05.2011 11:22

Во-первых, eval - это зло, во-вторых использование переменных без var(т.е. как глобальные тоже зло).
var obs = document.add_form;
var ob = obs[s];

Для проверки чекбокса нужно использовать
if ( ob.checked ) {//чекбокс отмечен

} else {

}

Nitro_Generate 30.05.2011 11:43

Спасибо работает.
Но хотелось бы разобраться. Почему ob.checked, а не value=='1', было бы ясно, если бы у меня в коде чекбокса не стояло value="1",
но ведь оно стоит, и бокс должен передавать еденицу при выборе.

ksa 30.05.2011 12:09

Цитата:

Сообщение от Nitro_Generate
Почему ob.checked, а не value=='1',

Потому как основное назначение чекбокса вкл/выкл, а не какие-то конкретные цифровые значения...


Часовой пояс GMT +3, время: 18:38.