![](/img/trans.png)
[英]Allowing only numbers from paste without using input number in pure JavaScript
[英]JavaScript - Allow only numbers from paste without using jQuery
我有這個腳本,只允許輸入數字,並且一切正常,但是如果用戶決定在輸入中使用粘貼,我希望僅粘貼數字。
我所指的粘貼是mouse paste
和keyboard paste
。 粘貼一般。 我試圖弄清楚這一點,但似乎無法找到一種方法。
這是我的代碼。
//Prevent non numbers from keypress document.querySelector('#numbers-only').addEventListener('keypress',preventNonNumbersInInput); function preventNonNumbersInInput(event){ var characters = String.fromCharCode(event.which); if(!(/[0-9]/.test(characters))){ event.preventDefault(); } } //Prevent non numbers from being pasted only numbers can be pasted document.querySelector('#numbers-only').addEventListener('paste',pasteTest); function pasteTest(){ //??? }
<input type="text" id='numbers-only'>
干得好。
您可以創建一個invalid chars
列表,以防止keydown
即粘貼。
下面是工作代碼:
var input = document.getElementById("numbers-only"); var invalidChars = [ "-", "+", "e", "." ]; input.addEventListener("input", function() { this.value = this.value.replace(/[e\\+\\-]/gi, ""); }); input.addEventListener("keydown", function(e) { if (invalidChars.includes(e.key) || e.which === 38 || e.which === 40) { e.preventDefault(); } });
input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
<input type="number" id="numbers-only" />
由於它是輸入,因此您可以輕松地將che輸入類型更改為數字。 然后,網絡瀏覽器將只允許輸入數字。
<input type="number" id='phone-number'>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.