2009-04-27 20 views
7

我正在通過JavaScript從文本框中提取一個值。如果文本框爲空,則返回NaN。我想返回空字符串,如果它爲空,空等。從文本框中獲取整數值,如何檢查它是NaN還是null等?

我該怎麼辦? if(NAN = tb.value)

+0

更具體的請:這是什麼文本(文本輸入,文本區域,選擇列表或什麼)?據我所知,沒有'textbox'值(空或不)會自行返回NaN。 – KooiInc 2009-04-27 13:36:20

+0

該文本框是否返回NaN或者是否將其解析爲首先浮點/整數(這意味着parseFloat/Int)將返回NaN。 – 2009-04-27 14:21:17

回答

16

恩,這裏有點腥。

在什麼瀏覽器中,一個空的文本框返回NaN?我從來沒有見過這種情況發生,我無法複製它。

文本框的值實際上是一個字符串。一個空的文本框會返回一個空字符串!

哦,並檢查,如果事情是NaN,你應該使用:

if (isNaN(tb.value)) 
{ 
    ... 
} 

注:isNaN() - 函數的東西不能被解析爲一個數字,除了空字符串返回true。這意味着它是爲數字輸入(比正則表達式更容易)好好檢查一下:

if (tb.value != "" && !isNaN(tb.value)) 
{ 
    // It's a number 
    numValue = parseFloat(tb.value); 
} 
0

你可以做的一件事是對文本框的值進行正則表達式檢查,並確保它符合接受的數字格式,然後如果它符合格式執行你的過程,否則返回一個空字符串。

編輯:這是一些代碼,我在我前面的例子(也許不是最好的正則表達式):

var anum=/(^\d+$)/; 

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value)) 
{ 
    alert("Order Value must be a valid integer"); 
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus(); 
    return false; 
} 

編輯2:我也應該注意到,我使用ASP.NET這就是爲什麼我有點時髦的方式訪問文本框。在您的常規JavaScript情況下,它可能並不那麼混亂。

2

你也可以這樣來做:

var number = +input.value; 
if (input.value === "" || number != number) 
{ 
    // not a number 
} 

的NaN等於什麼​​都沒有,甚至沒有自己。

,如果你不喜歡用+來從字符串轉換爲數字,使用正常parseInt函數,但記得要始終得到基材

var number = parseInt(input.value, 10) 

否則「08」變成0 JavaScript,因此認爲它是一個八進制數。

1

假設你已經在輸入文本框的引用:

function getInteger(input) { 
    if(!input || !input.value) return ""; 

    var val = parseInt(input.value, 10); 

    if(isNaN(val)) return ""; 
    else return val; 
} 
相關問題