Ответ
techfoobar глючит, он не выбирает все параметры, если вы перетаскиваете мышь.
Ответ Серджио интересен, но клонирование и удаление событий, связанных с выпадающим меню, не очень приятно.
Примечание. Не работает в Firefox, но отлично работает в Safari / Chrome / Opera. (Я не тестировал его на IE)
Для этого вам не нужно регулярное выражение! isNaN
приведет ваше значение к Number
:
var valid = !isNaN(value);
Например:
!isNaN('0'); // true
!isNaN('34.56'); // true
!isNaN('.34'); // true
!isNaN('-34'); // true
!isNaN('foo'); // false
!isNaN('08'); // true
Reluctant Edit (спасибо CMS):
Принуждение взорванного типа, ! IsNaN ('')
, ! IsNaN ('')
, ! IsNaN ('\ n \ t')
и т. Д. Все истинны
!
Проверка пробелов + isNaN
FTW:
var valid = !/^\s*$/.test(value) && !isNaN(value);
Уф.
Продолжая использовать подход @Crescent Fresh , некоторое время назад мне пришлось выполнить проверку числа, но мне нужно было проверить, содержит ли переменная число, не зная его типа. , это может быть String
, содержащий числовое значение, как в этом случае (я должен был учитывать также экспоненциальную запись и т. д.), объект Number
, в основном все, что я не мог делать какие-либо предположения о типах.
И мне пришлось позаботиться о неявном преобразовании типов, например, когда я указал на @Crescent, isNaN
было недостаточно для моего случая:
// string values
!isNaN(' ') == true;
!isNaN('\t\t') == true;
!isNaN('') == true;
// boolean values
!isNaN(true) == true;
!isNaN(false) == true;
// etc..
В итоге я написал набор из 30+ модульных тестов , которые вы можете найти и запустить здесь , и следующую функцию, которая прошла все мои тесты:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}