![](/img/trans.png)
[英]How to specify a maximum number of characters allowed in an input element - Is setting a maxlength attribute enough?
[英]How to restrict set of allowed characters in input element?
我知道這個問題曾經被問過,但是我在這里看到的所有解決方案都有一定的局限性。
我要實現的目標:我有一個輸入字段,應只允許輸入或粘貼字母數字字符,並且總長度不得超過N個字符。 它應該可以在移動瀏覽器中使用。
到目前為止我嘗試過的是:
return this.value.length < 8 && (event.keyCode >= 65 && event.keyCode <= 90 || event.keyCode >= 97 && event.keyCode <= 122 || event.keyCode >= 48 && event.keyCode <= 57)
)。 不會影響粘貼,並且出於某些奇怪的原因在Android的Chrome瀏覽器中根本無法使用。 據我所知,這是一項典型的任務(CVV代碼/付款單上的卡號,電子商務中的訂單號等),但是所有解決方案都有一些缺點。 似乎我缺少了一些東西。 請幫忙。
我曾經需要做同樣的事情,但我發現最好的解決方案是在每次輸入字段發生更改時都調用一個偵聽器。 為此,您應該可以使用oninput
html屬性或相應的input
javascript事件。
W3Schools的這個演示很好地展示了它如何響應輸入更改。 特別是,它不僅會在失去焦點時觸發,而且在粘貼文本時也會起作用。 當然,在偵聽器內部,您可以檢查輸入中的當前文本是否符合您的要求。
此解決方案甚至更酷的是,您甚至可以從偵聽器內部在輸入字段中編輯文本。 為此,您需要使用addEventListener(...)
將偵聽器添加到javascript中的input
事件中,然后只需使用this.value = 'new text';
。
當您將type = number屬性放置到輸入時,使用內置在Html5輸入中的驗證將防止非數字輸入。 如果要設置允許輸入的最大數字,也可以使用max屬性。 您仍然需要實現某種類型的客戶端代碼,以防止使用舊版瀏覽器出現數字,但是基本的Html5驗證在任何不錯的“真實”瀏覽器(Chrome,Firefox,IE v9 +等)上都能為您帶來很多幫助
這是有關輸入type =“ number”的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.