簡體   English   中英

JavaScript-僅允許粘貼粘貼數字,而不使用jQuery

[英]JavaScript - Allow only numbers from paste without using jQuery

我有這個腳本,只允許輸入數字,並且一切正常,但是如果用戶決定在輸入中使用粘貼,我希望僅粘貼數字。

我所指的粘貼是mouse pastekeyboard 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM