Я задавался вопросом, что лучший и самый легкий путь состоял в том, чтобы гарантировать, что значение, пользователь вводит в поле ввода, является числовым в веб-странице? или уведомьте их, что их не позволяют тому, когда они редактируют его или не позволяют им входить в не числовые значения для начала.
какие-либо идеи?
спасибо
Если разрешены только целочисленные значения, я бы попробовал что-то вроде:
if( isNaN(parseInt(str, 10)) ) {
//error
}
EDIT: @M28 и @unomi правы, это может позволить некоторые входные данные, которые на самом деле не являются числами. M28 опубликовал действительно хорошее решение в комментариях:
if( ! (parseInt(str, 10).toString() == str) ) {
//error
}
Используйте это с jQuery - http://digitalbush.com/projects/masked-input-plugin/
Это позволит вводить только числа. Он также очень прост в использовании и полностью настраивается, не говоря уже о легком весе.
Лучше всего использовать работу того, кто уже сделал это за вас, с помощью библиотеки проверки и / или библиотеки маскирования ввода. Не изобретайте велосипед, несколько красивых круглых колес с ободами, подходящими практически для любой машины, уже были изобретены для вас.
Не связывать здесь конкретную ссылку, потому что на самом деле это не главное, поиск по «библиотеке проверки формы javascript» найдет довольно много.
Править Я давно не искал, должен сказать, что мне нравится внешний вид этого . И проверка, и маскирование, а не специфичные для библиотеки (хотя, если хотите, доступен подключаемый модуль jQuery). Опять же, связывать их не главное, но это выглядело достаточно круто, чтобы кричать.
Я использую jquery и плагин AlphaNumeric, см. Здесь демонстрацию
Вы можете использовать регулярное выражение ^ \ d * $
var re = new RegExp("^\d*$");
if ($("#someinput").val().match(re)) {
alert("Only numbers");
} else {
alert("No match");
}
^ tells the expression to start matching from the beginning of the string.
\d is a match for numbers which is the same as [0-9] (any number from 0 to 9)
* tells to match all numbers in string.
$ tells the expression to match until the end of the string.
$ (" #someinput "). val () - это jquery, но вы можете использовать обычный javascript, например: document.somepintput.value.match (повторно).
Регулярные выражения заслуживают изучения, поскольку они могут решить многие проблемы аккуратно и лаконично. Регулярные выражения
вы можете использовать javascript для проверки события, которое может использовать функцию isNAN, чтобы видеть, что введенные значения являются числами или нет.
if (isNaN ($ ('input [type = text]'). Val ())
Кстати, isNaN означает Not a Number
Код получает входное значение, затем проверяет его от начала до конца, а {5} - это количество цифр (это необязательно).
function validzip () {
txt1 = document.FormName.InputName.value;
if (/ ^ \ d {5} $ / .test (txt1) == false) {
/ * Более простая / длинная альтернатива этому: if ((/ [0-9] / g .test (txt1) == false) || (txt1.length! = 5)) {* /
alert («Недействительно»);
вернуть ложь;
}
return true;
}
На стороне клиента начните с (это будет восприниматься как
type="text"
в браузерах, которые еще не поддерживают HTML5. Затем используйте javascript (как предлагают другие) для браузеров, не поддерживающих HTML5.
Не забудьте также о валидации на стороне сервера, на случай, если у людей отключен javascript.
Хотя nc3b и близок к этому, использование parseInt действительно позволяет решать те задачи, которые вы, возможно, не хотели бы решать.
parseInt("133t",10)
результат: 133
Лучше сделать
if(isNaN(Number(str, 10)){
Error;
}
Если вы хотите убедиться, что вся строка должна быть представителем числа.