Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > input[type=text]


Автор: Syntax 11.8.2010, 14:25
Есть input.
Код

<input type='text' id='num' value='100' />


Средствами jquery/javascript забираю value и пытаюсь определить тип.
Код

alert(typeof($('#num').val()));


Но что бы я не ввел в это текстовое поле, всегда возвращает - string.

Подскажите, пожалуйста, где загвоздка?

Автор: ksnk 11.8.2010, 14:55
Код

alert(isFinite($('#num').val())&&' integer'||parseFloat($('#num').val())&&' float'||'string');


немного неправильно с плавающими, но регулярками проверять сложнее...  smile 

Автор: Syntax 11.8.2010, 15:53
ksnk
Спасибо!  smile 

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

Автор: ksnk 11.8.2010, 16:19
Цитата(Syntax @  11.8.2010,  15:53 Найти цитируемый пост)
получается, текстовое поле всегда приобретает строковый тип?

Звучит как тавтология  smile 
Ну да... текст от и в Африке строка. B даже в php...

Автор: Syntax 11.8.2010, 16:29
Ну да, по логике - всё правильно. Текстовое поле - строковый тип.
Но в том и дело, что раньше нормально распознавалось всё. Если вводишь цифры, то целочисленный тип.
Или может я путаю? Так было всегда?

Автор: ksnk 11.8.2010, 16:44
value у HTMLelement'а всегда было строковым, насколько я помню... ну или null, в крайнем случае undefined ... 
А вот про jQuery, за все версии не гарантирую. Как бы не очень сложно вставить туда проверку на числа и строки. Возможно, плагин-валидатор-фильтр какой-нибудь может подменить результаты вывода функции val, так что "раньше" такое вполне могло бы встречаться...

Автор: lorenzio 12.8.2010, 00:44
ksnk, http://tinyurl.com/2dz2cte, и мне помогли)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)