2012-02-17 41 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 – 2012-02-17 10:36:31

+1

更好:http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – Lukas 2012-02-17 10:41:23

+0

顯示我們'JavaScript函數',你嘗試.. – Vijay 2013-08-26 04:25:22

回答

1

JavaScript具有內置函數isNaN(text)。只需將文本框的文本傳遞給該函數即可獲得布爾結果。

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 0.50' 和'20不,50' 作爲在某些國家自定義值。如果你需要這種靈活性,你需要做額外的字符串預處理。通過這種解決方案,只允許有一千個分隔符(例如'100 000')。

不幸的是,檢查一個空字符串是必要的,因爲isFinite('')返回true。

你也可以使用此功能從用戶CMS(詳細解釋見:Validate decimal numbers in JavaScript - IsNumeric())!

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

VAR有效= 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 2015-07-11 14:28:00