javascript-如何对字母和特殊字符禁用粘贴选项,但对数字启用

我使用此代码来限制键入字母和字符.

  <script type="text/javascript">
    function isNumber(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }
        return true;
    }

</script>
<asp:TextBox ID="txtCode" runat="server" Width="15%"   onkeypress="return isNumber(event)"/>

但是我可以将字母和字符粘贴到其中(我不想要).

当我使用此代码时,“粘贴选项”被禁用,但是我无法粘贴数字

   <asp:TextBox ID="txtCode" runat="server" Width="15%" ondrop="return false;"
     onpaste="return false;" onkeypress="return isNumber(event)" />

但是我想粘贴数字:(,我该怎么做?.

解决方法:

首先,您应该使用type =“ number”来具有语义含义和形式验证,例如现代浏览器中的HtML5,并且要在所有浏览器中获得实时功能,您可以尝试以下操作:

function isNumber(ev) {
    if (ev.type === "paste" || ev.type === "drop") {
        var textContent = (ev.type === "paste" ? ev.clipboardData : ev.dataTransfer).getData('text');
        return !isNaN(textContent) && textContent.indexOf(".") === -1;
    } else if (ev.type === "keydown") {
        if (ev.ctrlKey || ev.metaKey) {
            return true
        };
        var keysToAllow = [8, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57];
        return keysToAllow.indexOf(ev.keyCode) > -1;
    } else {
        return true
    }
}
<input type="number" placeholder="paste numbers only" name="" onpaste="return isNumber(event)" onkeydown="return isNumber(event)" ondrop="return isNumber(event)">

如果&&删除第二个条件pasteContent.indexOf(“.”)===-1如果要允许整数以及浮点数.但是如果您已经有一个浮点数,则允许使用浮点数会导致问题,因此它将是带有两个“.”的无效数.

上一篇:【Rust】属性-死代码


下一篇:池技术的简单应用 初次接触游戏优化(逻辑优化)技术