2010-06-22 44 views
17

我使用新的HTML5輸入類型之一的值,number獲得一個HTML5數字輸入

<input type="number" /> 

在Opera中,這是唯一的桌面瀏覽器,我知道的目前承認它,它呈現爲這樣:

enter image description here

我現在面臨的問題是驗證中的一個。如果用戶在字段中輸入了無效的內容,例如:「abc」,則myInput.value返回的值爲空字符串。這使得無法判斷用戶是否將該字段留空或者他們輸入了一些不正確的數據。有什麼方法可以獲得該領域的真正價值?

回答

13

的HTML5草案定義:

值消毒算法如下:如果該元素的值不是有效的浮點數,然後將其設置爲空字符串來代替。

Reference1

我想你必須使用的「0」的默認值,以確保該領域被原封不動或者如果事情是無效的進入,因爲似乎有區分沒有明顯的方式二。

讀了驗證規格和一些測試(在Opera 10.54)後,我得出的結論是:

<input id="email" type="email" value="blah"> 
document.getElementById("email").validity.typeMismatch // True 

不上<input type="number">工作。不知道是否應該這樣做,或者這是一項正在進行的工作。該屬性確實存在,但它總是返回False。

Read more2

您還可以設置自定義的驗證方法Reference3

+2

哦球。將字段留空需要成爲我的目的的有效狀態(並且與輸入0不同)...無論如何,謝謝。 – nickf 2010-06-22 12:55:36

+0

該規範確實會說:「如果應用解析浮點數值的規則輸入錯誤的結果,則返回錯誤;否則返回結果數字。」你認爲有什麼方法可以解決這個錯誤? – nickf 2010-06-22 12:59:01

+0

查看更新的答案。 – Daniel 2010-06-22 13:54:17