2012-04-17 64 views
5

長話短說,我試圖驗證手機領域。香港專業教育學院添加 的isNaNparseInt檢查在該領域的" "但說parseInt總是返回NaN?

這絕不下面以驗證true..what我缺少什麼?

if(isNaN(parseInt(phone))){ 
     error.text("Sorry but this phone field requires numbers only"); 
     return false; 
    } else { 
    return true; 

    } 

它總是失敗......即使我在字段中輸入數字並提交,它也不會讀取真。 我總是得到錯誤mssg。

編輯:我從一個測試形式輸入值,phone是字段的名稱。

+0

適用於我,例如電話=「5」。你的測試輸入值是多少? – Bergi 2012-04-17 02:44:27

+0

對不起,即時測試從表格輸入vals – somdow 2012-04-17 02:45:10

+0

您應該在這個問題中也包含您的html。這可能會幫助我們調試它。 – webnesto 2012-04-17 02:46:17

回答

7

parseInt有時是有點古怪:

> parseInt("123-456-789") 
123 

幸運,也許可以與解決您的情況:

> Number("123-456-789") 
NaN 
10

各種方式來coerse JS字符串的數字,及其後果:

Results of converting various strings using the above techniques http://phrogz.net/JS/string_to_number.png

我個人使用*1,因爲它是短暫的輸入,但依然突出(不像一元+),並給我什麼用戶輸入或完全失敗。我只使用parseInt()當我知道將有非數字內容末尾要忽略,或者當我需要解析非基10字符串。

編輯:基於您的評論,如果用phone.val()固定它,然後

  1. 你是使用jQuery(你從來沒提過,並且應該有),以及
  2. 實際上你/有jQuery對象,包裝一個或多個DOM元素(可能只是一個)。

無論你做什麼var foo = $('…');那麼foo變量引用一個或多個元素的jQuery對象。你可以通過var fooEl = foo[0];var fooEl = foo.get(0); ...得到第一個真正的DOM元素,但即使如此,你仍然仍然有有一個DOM元素,而不是一個特定的屬性。

對於表單輸入,您需要從DOM元素獲取.value,這是jQuery .val()方法的作用。