2015-06-17 3 views
0

У меня есть поле ввода, которое может принимать значения от 0 до 100 (допускается поплавок). Есть ли какая-либо функция, которая может преобразовать строковое значение в поле ввода до десятичного, чтобы я мог сравнить его?Проверка ввода в поле ввода в HTML

Я попытался parseFloat, но если строка = "10Hi", parseFloat будет возвращать 10.

+0

попробуйте это, 'parseFloat (" 10 ")'. – VPK

+0

Возможный дубликат [this] (http://stackoverflow.com/questions/19011861/is-there-a-float-input-type-in-html5) – Scott

+0

Вы пытались использовать регулярный полевой валидатор перед разбором? –

ответ

0

вы можете использовать parseFloat функцию:

parseFloat('12.5') 

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

var isValid = (inputStr.match(/^-?\d*(\.\d+)?$/)); 

if (isValid == null) 
    alert('in valid'); 
else 
    alert('valid'); 
0

Ну, как насчет isFinite?

isFinite(10)  // true 
isFinite('10.1'); // true 
isFinite('10Hi') // false 
+0

'isFinite ('0x5f') && isFinite ('2.3e1') // true'. ;-) – RobG

0

Вы можете использовать ниже условие:

var str = "12.5", number; 

if(isFinite(str) && str.indexOf(".") == -1) 
    number = parseFloat(str); 

Обновлено:

Если вам нужно, чтобы получить точное число только тогда вы можете просто использовать, как показано ниже:

var str = "12.5", number; 

if(isFinite(str)) 
    number = +str; 

Таким образом, он всегда возвращает конечное число, включая fl ценность.

Если str является «0x5f», то оно возвращает значение как 95, так как оно также имеет действительное шестнадцатеричное число check here.

+0

Значит, вы бы запретили '10 .1 '? – RobG

+0

Да, «10.1» здесь не допускается. – Soundar

+0

Per OP: "* ... float разрешено ... *". – RobG

0
$(".decimal").each(function(){ 
    var v = $(this).val(); 

    //pattern: integer or decimal 
    var valid = /^\d+$/.test(v) || /^\d+\.\d+$/.test(v); 
}); 

https://jsfiddle.net/fwf3eumk/

+1

Не разрешает '. .12 '' или '' 12.'', которые являются действительными десятичными числами. Любое рассмотрение начального или конечного пробела? Также бесполезное использование jQuery: 'var v = this.value' значительно более эффективно. ;-) – RobG

0

Чтобы проверить, что вход десятичного поплавок от 0 до 100 включительно, регулярное выражение может использоваться, чтобы исключить строки, как '0x5e' (который является действительным представлением числа в диапазоне от 0 до 100), тогда строка может быть преобразована в число, чтобы проверить значение в пределах разрешенных границ.

например.

function testValue(n) { 
    var re = /^\s*\d*(\d\.?|\.?\d)\d*\s*$/; 
    var num = Number(n) 
    return re.test(n) && n >= 0 && n <= 100; 
} 

['12','12.','.12','12.2','0x5e'].forEach(function(v) { 
    console.log(v + ' : ' + testValue(v)); 
}); 

12 : true 
12. : true 
.12 : true 
12.2 : true 
0x5e : false 
Смежные вопросы