2013-07-20 47 views
1

我目前工作的一個項目,我需要檢查,如果用戶輸入一個數值。當他輸入一個以小數點開頭的號碼(.20)時,問題就出現了。我一直在尋找解決方案,但現在我只是放棄了。奈恩或是數字作品都不是。還試圖檢查像:if(value > 0),但這隻適用於用戶輸入前導零。 任何幫助將不勝感激!提前致謝!JavaScript的檢查值數,但允許沒有前導零

解決方法: isNaN不適合我,因爲我使用parseInt()而不是parseFloat()。現在一切正常。我希望管理員能夠原諒我提出的愚蠢問題!這個線程現在可以被刪除。

+1

嘗試'如果(+值> 0)'。 – elclanrs

+0

或'parseFloat(值)> 0' –

+2

我不明白,爲什麼不isNaN工作 - > http://jsfiddle.net/6NrZA/1/ – adeneo

回答

0

工作演示http://jsfiddle.net/sPt7q/1

使用

if(parseFloat(n) > 0){} 

JS在撥弄

var n = '.2'; 
if (n > 0) { 
    alert(n); 
} 
if(parseFloat(n) > 0){ 
    alert(parseFloat(n)); 
} 
+0

如果'n' *已經是一個數字,那麼使用'parseFloat'有什麼意義? –

+0

哦,你是正確的我更新了代碼請現在檢查它工作正常。 –

1

一個更好和防呆的方法是使用正則表達式:

var reg = new RegExp('^[1-9]\d*(\.\d+)?$'); 

var reg = new RegExp('^[1-9]\d*(\.\d+)?$'); 

用戶輸入將是一個字符串(從表單字段)。檢查該字符串對這個正則表達式,應該工作。

例如:

if(reg.test(userInput)) { 
    //returns true 
} else { 
    //returns false 
} 
+0

*爲什麼*比使用'isNaN'更好?你有任何事實來支持你的說法嗎?順便說一句,你的表達不會正確處理「.2」。 –

+0

更新了我的正則表達式。這將處理像2,0.2,.2(沒有leadng零),2.222等這種正則表達式檢查一個數字,也可以是一個小數。 – Rajesh

+0

仍然沒有解釋爲什麼它是「更好」。 –

0

嘗試這種情況:

var val = .21; 
if (!isNaN(val) && val.toString().indexOf('.') == -1) { 
    console.log('valid number:' + val); 
} else { 
    console.log('invalid number: ' + val); 
} 

jsFiddle

相關問題