2011-07-28 64 views
0

我試圖讓JavaScript函數在文本框中驗證整數值。但是我找不到任何最好的方法來驗證它。驗證文本框中的整數值和浮點值僅使用Javascript

(整數和浮點值是可以接受的,但不允許使用字母)。

+2

你的問題包含初級'must'字,我沒有看到任何地方'這裏是我迄今爲止嘗試過的代碼......'字。發佈你的老師/客戶/經理的要求,而不說明你迄今爲止嘗試過的東西在這裏並不合適。您可能需要聘請一位JavaScript開發人員。 –

+0

對此評論抱歉。 – Rubyist

回答

0

那麼在超現代的瀏覽器(今天它只有webkit,如果我沒有弄錯的話)就是所謂的html5輸入。還有一個type =「number」的輸入。您可以檢查其是否支持或不這樣說:

function hasInputNumber() { 
    var el = document.createElement("input"); 
    el.setAttribute("type", "number"); 
    var testval1 = "12121.121"; 
    var testval2= "1212.asas.a"; 
    el.value = testval1; 
    var test1 = el.value === testval1; 
    el.value = testval2; 
    var test2 = el.value != testval2; 
    return test1 && test2; 
} 

至於其他的,你可以使用輸入類型=「數字」,並試圖模仿它時,不支持此功能與JavaScript行爲。人們通常會嘗試執行此監聽鍵盤事件並取消除數字之外的任何輸入。這實際上很難完全正確地實現,因爲我們可以粘貼輸入,動態驗證浮點數並不是那麼微不足道,因此也是如此。所以我建議你在提交之前進行驗證。

至於驗證本身,有2個功能可以使用 - parseIntparseFloat。不要小心,有一些細微的問題。總是將10作爲第二參數傳遞給parseInt,並記住js將嘗試解析任何數據。例如 - 「121212sdsds」不會被視爲html5輸入中的數字[type =「number」]。但是會用parseFloat解析爲121212。

我應該提到的最後一件事是NaN。 NaN是一種特殊類型的數字(是的,它實際上是一個數字,因爲typeof NaN == "number"),它不等於任何東西,甚至不等於它自己。當解析輸入失敗時,parseInt和parseFloat都會返回NaN。由於NaN!= Nan,檢查某些東西的正確方法是NaN,即調用函數isNaN

我想這是所有我可以告訴在JS號驗證:)

1

我不知道如果我完全理解這個問題。你只是檢查,以確保只有整型輸入到文本框?如果是這樣,我會使用reg表達式來檢查文本框。是這樣的:

function isNum(elem, msg){ 
var numericExpression = /^[0-9]+$/; 
if(elem.value.match(numericExpression)){ 
    return true; 
} 
    else{ 
    alert(msg); 
    elem.focus(); 
    return false; 
} 

}