2013-03-22 1 views
0

Я хочу разрешить только целые числа и поплавки (до 3 десятичных знаков) в текстовом поле, как я могу достичь этого с помощью javascript?разрешить ввод с десятичными разрядами до 3

Допустимые значения

1234 
12.3 
12.314 
1.11 
0.4 

Не действует

1.23456 
abcd or any other character 
+0

Вы уже используете рамки проверки JavaScript? –

+2

Является ли '.1' и' 1.' действительным? – epascarello

+0

1. Недействительно – coure2011

ответ

1

Основываясь на комментарии, что вам нужно также соответствовать ".1" вам нужно добавить условный с первой частью регулярного выражения.

var re = /^(\d+)?(?:\.\d{1,3})?$/; 

Rough test suite - jSFiddle

+0

Как разрешить '%' последним? например 14.54% –

+0

Добавьте его перед знаком доллара. – epascarello

+0

Я использовал '/^(\ d +)? (?: \. \ D {1,3})?% {1}? $ /' И, похоже, работает. Правильно ли это? –

0

использовать регулярное выражение для проверки вашего поля ввода, регулярные rexpression как ниже

^[0-9]+(?:\.[0-9]{1,3})?$ 
+1

Ваш рег exp не проходит много тестов. Вам не хватает +. Вы можете увидеть [тесты здесь] (http://jsfiddle.net/2cawf/1/) – epascarello

+0

@epascarello - i updated ... спасибо за указание, что вне –

0

Вы можно использовать регулярное выражение для этого:

/^\d+(?:\.\d{1,3})?$/ 

Это начало строки (^), один или более цифр (\d+), необязательно с последующим . и между 1 и 3 цифры ((?:\.\d{1,3})), а затем конец строки ($).

Чтобы сравнить его со значением входного сигнала, вы могли бы сделать что-то вроде этого:

var re = /^\d+(?:\.\d{1,3})?$/; 
var testValue = document.getElementById('id-of-input').value; 
if(re.test(testValue)) { 
    // matches - input is valid 
} 
else { 
    // doesn't match - input is invalid 
} 

Посмотрите на this jsFiddle demo.

+0

Не удалось выполнить «.1» '- [Тесты] (http: //jsfiddle.net/aNZAx/), я спросил в комментариях выше. – epascarello

+0

@epascarello Я обновлю, когда они явно подтвердят, что '.1' - действительный ввод; до тех пор я считаю его недействительным. –

0

Попробуйте это:

var reg=/^[\d]+(?:\.\d{1,3})?$/; 
str=10.2305; 
str1=123; 
alert(reg.test(str)); 
alert(reg.test(str1)); 

Проверить Fiddlehttp://jsfiddle.net/8mURL/1

+0

Сбой «.1» '- [Тесты] (http://jsfiddle.net/aNZAx/), я спросил в комментариях выше – epascarello

+0

@epascarello. Тестирование вышеизложенного я изменил. –

Смежные вопросы