javascript - 只允许数字的实时输入文本过滤

标签 javascript html css

你好,我正在尝试使用 javascript 制作实时输入类型 =“文本”过滤器,它只允许数字和点。 我写了

Javascript:

<script>
function thirdTaskFunction(evnt) {
    evnt = evnt || window.event;
    var charCode = evnt.which ? evnt.which : evnt.keyCode;
    return /\d/.test(String.fromCharCode(charCode));
}

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

function thirdTaskFunction() {
    var thirdInput = document.getElementById("thirdTaskInputText");
    thirdInput = thirdInput.onchange = thirdTaskFuncion;
    var valid = /^\-?\d+\.\d*$|^\-?[\d]*$/;
    var number = /\-\d+\.\d*|\-[\d]*|[\d]+\.[\d]*|[\d]+/;
    if(!valid.test(this.value)) {
        var compare = this.value.match(number);
        this.value = compare ? compare[0] : '';
    }

}
</script>

HTML:

<div id="thirdTaskDIV">
    <input id="thirdTaskInputText" type="text" placeholder="Type a number" autofocus onkeypressed="return thirdTaskFunction(event);">
</div>

我尝试了很多方法,每一个 thirdTaskFunction() 方法都不起作用,我在 w3schools 上测试了解决方案所以也许这就是原因?但我认为我不记得让它起作用的东西。我知道它与“HTML 文本输入只允许数字输入”非常相似,但它不起作用。所以我希望有人告诉我这里有什么 pappyn。

最佳答案

在输入字段中只允许输入数字的一种方法是使用按键事件监听器。因此,您需要选择输入字段并为其提供一个事件监听器,如下所示:

     const inputField = document.querySelector("/*input field id here*/");
     inputField.addEventListener("keypress", function(e){
       if(e.keyCode > 48 && e.keyCode < 57){
         e.preventDefault();
       }
     }

此函数检查按下的键是否与数字键匹配,如果不匹配,则阻止默认操作,在这种情况下将字符打印到输入字段。

如果你有任何问题,我会尽力回答!

附言使用的 keyCode 数字是基于内存的估计值,要获取键码,只需在 google 上快速搜索“ASCII 键码”即可。

关于javascript - 只允许数字的实时输入文本过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59777509/

相关文章:

javascript - 如何在 Javascript 中执行具有异步条件的 "for"循环?

javascript - 如何调用bootstrap datepicker的javascript函数?

html - 如何在缩小内容之前将 <DIV> 元素的填充缩小为零?

javascript - 为什么添加一个类会影响使用 JS/jQuery 在同一循环中报告的高度

javascript - 如何使用 React Native 创建模态窗口?

javascript - 与 Angular-Material 一起使用时,有时不显示 Angular-Messages

html - IE7 : an excessive margin in form for textarea

javascript - 如何修复使用 100% 宽度的 javascript slider 中的疯狂间距?

html - 一个 div 内的两个 div 响应填充

css - 为什么我的文字溢出