Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка данных формы составным условием? (https://javascript.ru/forum/dom-window/16246-proverka-dannykh-formy-sostavnym-usloviem.html)

myafa 31.03.2011 09:44

Проверка данных формы составным условием?
 
Добрый день, уважаемые форумчане! Нужна Ваша скорая помощь.
У меня есть форма на php "custinfo_form" в которую пользователь вносит данные, проверка их корректности выполняется вызовом js скрипта (из отдельного файла).

Пример: в форме есть поле ves

Нужно сравнить значение введенное пользователем с двумя цифровыми значениями в одной строке. Пишу так:
.............
if ((document.custinfo_form.ves.value<"10") || (document.custinfo_form.ves.value>"3"))
		{
			alert("Вам не подходят детские кресла Beby Car серии corona");
			return false;
		}
return true;
.............


Проверка выполняется не корректно, и со скобками и без. Но если оставить только одно условие, то все работает прекрасно.
Вопрос: правильно ли я обращаюсь к полю формы и можно ли так обращаться два раза, если нет то как быть?

Очень жду ответа :cray:

Skipp 31.03.2011 09:53

"10" - это строка
10 - а это число
document.custinfo_form.ves.value - это строка
< - а как вы думаете как этот оператор будет работать со строками
if ((parseInt(document.custinfo_form.ves.value)<10) || (parseInt(document.custinfo_form.ves.value)>3))

parseInt() - преобразует строку в число

x-yuri 31.03.2011 09:57

alert([ "9" < "10", Number("9") < 10 ]);

myafa 31.03.2011 11:05

Skipp, спасибо за разъяснение со строками и числовыми значениями, кажется в голове себе уяснила :)
Но вот проблема осталось та же:
Если одно условие - работает, если два, то нет. Всегда выдает folse, т.е. сообщение alert...
Как быть? :cray:

p.s. может вообще обращение "document.custinfo_form.ves.value" употреблять несколько раз нельзя?

рони 31.03.2011 11:47

myafa,
if ((parseInt(document.custinfo_form.ves.value)<10) || (parseInt(document.custinfo_form.ves.value)>3))
Под это условие подходит всё ...скорее всего надо
if ((parseInt(document.custinfo_form.ves.value)<10)&&(parseInt(document.custinfo_form.ves.value)>3))
или
if ((parseInt(document.custinfo_form.ves.value)>10)||(parseInt(document.custinfo_form.ves.value)<3))

myafa 31.03.2011 12:34

Рони, Вы правильно подметили про знаки. Это здесь я ошиблась, а в своем скрипте условия "меньше" трех "или" "больше" десяти.
Спасибо за внимательность :thanks:

Только вопрос по прежнему открыт...
..........
if ((document.custinfo_form.ves.value<"3") || (document.custinfo_form.ves.value>"10"))
	        {
	            alert("Вам не подходят детские кресла Beby Car серии corona");
	            return false;
	        }
	return true;
..........

Skipp 31.03.2011 12:38

Цитата:

Сообщение от myafa
кажется в голове себе уяснила

видимо не совсем)
разве так не работает?
if ((parseInt(document.custinfo_form.ves.value)<3) || (parseInt(document.custinfo_form.ves.value)>10))
	        {
	            alert("Вам не подходят детские кресла Beby Car серии corona");
	            return false;
	        }
	return true;

myafa 31.03.2011 13:42

Сообщение от Skipp
разве так не работает?
К моему большому сожалению нет.
И с кавычками и без кавычек ....

Если подставить, просто для эксперимента, во второе условие проверку соседнего поля формы то все работает:

if ((parseInt(document.custinfo_form.ves.value)<3) || (parseInt(document.custinfo_form.rost.value)>80))
	            {
	                alert("Вам не подходят детские кресла Beby Car серии corona");
	                return false;
	            }
	    return true;

проходит правильно проверку и на входное значение по весу и по росту
Почему...

А можно вообще в этой проверке не каждый раз смотреть что в другом файле ввел пользователь, а один раз взять данные и поместить их в переменную и уже с ней работать?

x-yuri 01.04.2011 08:30

а что так выдает?
alert( document.custinfo_form.ves.value );
if ((parseInt(document.custinfo_form.ves.value)<3) || (parseInt(document.custinfo_form.ves.value)>10))
	        {
	            alert("Вам не подходят детские кресла Beby Car серии corona");
	            return false;
	        }


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