2013-10-20 11 views
1

我目前正在輸入一個文本框和on-submit,我驗證輸入,輸入需要是一個大於0的數字,它應該是整數,而不是包含小數點。問題是我無法找到任何方法,我們可以檢測到它是整數或包含小數點。這是我正在使用的代碼。檢測如果數字是INT或FLOAT在jQuery中

txt[5] = $(this).parents('p').find('input:text').val(); 
    if (txt[5] == "" || isNaN(txt[5]) || txt[5] <= 0) 
    { 
     alert("Incorrect Quantity"); 
     return false; 
    } 

基本上你看到我驗證由用戶提供的輸入,我想向他們展示一個消息,如果輸入錯誤,所以我目前使用TXT [5]%1!= 0到確保只有INT是允許的,但我接受新的答案。

+3

爲什麼不能簡單地用'parseInt函數() '?它截斷浮動,'不可解析'輸入將返回'NaN'。 – Kiruse

+0

可能重複的[如何檢查數字是浮點數還是整數?](http://stackoverflow.com/questions/3885817/how-to-check-if-a-number-is-float-or-integer) –

+0

@FelixKling:請記住,如果所提供的參數是一個字符串,那麼對該重複的答案將不起作用,因爲'typeof「5」'是'string'。 –

回答

3
txt[5] = parseInt($(this).parents('p').find('input:text').val(), 10); 

這將不會驗證號碼(見Nirk's answer爲該),但如果它不是一個int,它會被轉換爲一個。

+0

,除非它不是數字 –

+0

是的,那將會被OP已經存在的檢查所困住。 – bfavaretto

+0

最後的「10」是什麼? – Ankur

3

這是因爲JavaScript只有一個數字類型,稱爲number。它既不是int也不是float,但它的行爲像一次。但是,您有兩種方法可用於此parseIntparseFloat

var result = parseInt($(this).parents('p').find('input:text').val()); 
txt[5] = result; 

使用parseFloat與此類似。例如。

var result = parseFloat($(this).parents('p').find('input:text').val()); 
txt[5] = result; 

第二個例子不是你想要的,但它只是供你參考。

更新:@bfavaretto使用基數做了一個好點,我在parseInt省略。看看這個網頁,參考http://www.w3schools.com/jsref/jsref_parseint.asp

4

最簡單的方法是分析文本的數量,強制成整數,看看它們是否相等:

var numbertxt5 = Number(txt[5]); 
if(numbertxt5 | 0 == numbertxt5) { /* int */ 
} else if (!isNaN(numbertxt5)) { /* float */ 
} else { /* not a number */ 
相關問題