2015-10-07 98 views
0

我在表單中使用input type="number"。我觸發一個onchange事件來獲得它的價值。帶有parseInt onchange的HTML輸入號碼

但是當我寫'2a'時,它說這個值是空的。所以我甚至無法輸入parseInt()來得到'2'整數,我想要的。

它當然與input type="text"一起工作,但我也想使用數字類型的最小最大屬性來簡化表單驗證。有沒有解決這個問題的方法?

+6

''類型爲「number」的元素(在支持它的瀏覽器中)堅持該值爲有效數字。任何不是數字的東西都將被視爲空值。 – Pointy

+0

正如Pointy所提到的那樣,'number'類型的輸入限制用戶只輸入數字,這樣你甚至不需要在腳本中調用'parseInt()'。 – Arkantos

+0

@Arkantos,他必須設置值'value =「2a」' – Rayon

回答

0

您可以使用​​代替change做到這一點:

document.querySelector('input').addEventListener('keydown', function(e) { 
 
    var char = e.key || String.fromCharCode(e.keyCode) || String.fromCharCode(e.charCode); 
 
    if (!/[0-9]/.test(char)) { 
 
    e.preventDefault(); 
 
    } 
 
});
<input type="number" min="0" max="100" placeholder="Insert a number">

+0

max =「100」在不工作? –

+0

嗯是的,這將工作。唯一不行的將是複製粘貼,但在我的情況下,它不是必需的。 – Harderer

0

輸入元素的類型號並不意味着你可以不寫其他類型內的字符,只是爲了使在html上下文中包含輸入有效或無效的表單元素,我建議在輸入中使用正則表達式或字符檢查一個JavaScript函數鏈接到onkeydown事件,您可以控制絕對可插入的字符或不是在那個輸入中。如果你使用一個框架的JavaScript,有一些功能可以幫助你,在其他情況下,你可以自己編寫一個JavaScript函數。 例如,這是一個允許正數和負數的整數/小數的正則表達式。

"^[-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+)$"