簡體   English   中英

通過addEventListener僅允許數字輸入不返回false的函數

[英]Function for allowing only numeric input not returning false via addEventListener

在我的外部JS文件中,我具有以下代碼來禁用用戶的非數字輸入。

function numericInput(evt) {
   var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 48 || charCode < 57)
    {
        return true;
    } 
    else 
    {
       return false;
    }
 }

我想通過addEventListener添加此功能,我做了以下

document.getElementById("myTextbox").addEventListener("keypress", function (evt) {
    numericInput(evt);
}, false);

我做錯了什么?

部分charCode > 48 || charCode < 57 如果您的if語句中的charCode > 48 || charCode < 57 ,則實際上始終返回true。 這是因為每一個數字比48大或小於57.我想|| 應該是&& 另外,數字的最小KeyCode是48,如果替換||則不包括在內。 && 數字最大的KeyCode都不是57。

我認為如果替換charCode > 48 || charCode < 57您的代碼將正常工作。 charCode > 48 || charCode < 57其中charCode >= 48 && charCode <= 57

編輯:如前所述,您必須用evt.preventDefault()代替return false

此功能應該起作用:

 function numericInput(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode >= 48 && charCode <= 57) { return true; } else { evt.preventDefault(); } } /* OR: */ function numericInput(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode < 48 || charCode > 57) evt.preventDefault(); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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