2012-02-17 2 views
1

Я попытался сделать функцию javascript до validate integer values из текстового поля. Каков наилучший способ его проверки, так что допустимы только значения integer and float?JavaScript для проверки чисел с плавающей точкой и целого числа

Обязательная функция скрипта java для проверки числа.

+1

http://stackoverflow.com/questions/3885817/how-to-check-if-a-number-is-float-or-integer –

+1

еще лучше: http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – Lukas

+0

показать нам функцию javascript, которую вы пробовали .. – Vijay

ответ

1

JavaScript имеет встроенную функцию isNaN (текст). Просто передайте текст своего текстового поля этой функции, чтобы получить логический результат.

6
// remove whitespaces 
var input = input.replace(/\s+/g,""); 

// check if the input is a valid number 
if(isFinite(input) && input != ''){ 
    // do your thing 
} 

Помните, что isFinite принимает только такие значения, как '20 .50 ', а не '20, 50', как это принято в некоторых странах. Если вам нужна такая гибкость, вам нужно выполнить дополнительную предварительную обработку строк. И с этим решением допускаются только пробелы в виде тысяч разделителей (например, «100 000»).

К сожалению, проверка пустой строки необходима, так как isFinite ('') возвращает true.

Вы также можете использовать эту функцию от пользователя CMS (подробное объяснение см: Validate decimal numbers in JavaScript - IsNumeric())!

function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 
0

вар действует = IsNaN (значение); Например:

!isNaN('0'); // true 
!isNaN('34.56'); // true 
!isNaN('.34'); // true 
!isNaN('-34'); // true 
!isNaN('foo'); // false 
!isNaN('08'); // true 

!isNaN(''), !isNaN(' '), !isNaN('\n\t'), и т.д., все верно!

Пробелы тест + IsNaN FTW:

var valid = !/^\s*$/.test(value) && !isNaN(value); 
1

Великолепное решение для меня цифровой проверки в JavaScript.

function isFloat(evt) { 

var charCode = (event.which) ? event.which : event.keyCode; 
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) { 
    alert('Please enter only no or float value'); 
    return false; 
} 
else { 
    //if dot sign entered more than once then don't allow to enter dot sign again. 46 is the code for dot sign 
    var parts = evt.srcElement.value.split('.'); 
    if (parts.length > 1 && charCode == 46) 
     { 
     return false; 
     } 


    return true; 

} 

}

Просто скопируйте и прошлое Javascript код и применить к текстовое поле OnKeyPress, как это ..

<input type="text" onkeypress="return isFloat(event)" /> 
0

onload =function(){ 
 
    var ele = document.querySelectorAll('.number-only')[0]; 
 
    ele.onkeypress = function(e) { 
 
    if(isNaN(this.value+""+String.fromCharCode(e.charCode))) 
 
     return false; 
 
    } 
 
    ele.onpaste = function(e){ 
 
    e.preventDefault(); 
 
    } 
 
}
<input class="number-only" type=text />

+0

не работает для отрицательных значений – spy

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