繁体   English   中英

只允许输入字段中的数字 IOS

[英]Allow only numbers in Input field IOS

好吧好吧。 我想限制输入字段只接受最大长度为 5 个字符的数字。

我的尝试:

HTML

 <input type="number" maxlength="5" onKeyDown="numbersOnly(event);/>
 <input type="text" pattern= "[0-9]" onKeyDown="numbersOnly(event);/>

Javascript

   function numbersOnly(event,length) 
   {  
    return event.ctrlKey || event.altKey 
    || (95<event.keyCode && event.keyCode<106)
    || (event.keyCode==8) || (event.keyCode==9) 
    || (event.keyCode>34 && event.keyCode<40) 
    || (event.keyCode==46)
    || (event.keyCode>47)&&(event.keyCode<=57) ;
   }

一切都在 Firefox 中工作。 但是当我用 safari ipad 检查时,它接受像 ()@!#$& 这样的特殊字符。 我使用警报功能进行调试。 它为 @ 和 2 、 3 和 # 等返回相同的 keyCode。 我尝试了 keyUp、keyPress 事件和 event.charCode、event.which、event.key。 没有任何效果

那么如何区分它,我还需要支持退格键、回车键、删除键、箭头键。

我做过一次,一直无法打破它。 在 iPad 上测试。

// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
    this.value = this.value.replace(/[^0-9]+/g, '');
    if (this.value < 1) this.value = 0;
});

// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
    return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});

这也说明了人们经常忘记的复制/粘贴和拖放文本。 您可以将最大长度添加到 onchange。

注意 iOS keyCodes 不是同一个桌面计算机。 在 Javascript 中查看IOS keyCodes

<input type="number" maxlength="5" onkeypress="numbersOnly(event);/>

 var numbersOnly = function(event) {
        if(event.keyCode >= 48 && event.keyCode <= 57) {
            return false;
        } else {
            event.preventDefault();
        }
    }

在输入上使用type="number"可以防止您通过input.value读取非数字输入值(然后它将返回一个空字符串),从而消除过滤无效用户输入 (+-.e) 的可能性,同时保持有效数字。 因此你必须使用type="text" 例子:

 $('.input-number').on('input', function (event) { this.value = this.value.replace(/[^0-9]/g, ''); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input class="input-number" type="text" maxlength="5">

如果您希望文本光标在粘贴或输入无效输入时不移动,请在此处查看我对类似问题的回答: 仅采用数字和 + 符号的 HTML 输入

如果您想在输入类型数字字段中输入唯一的数字。 这会很有帮助,它也适用于 iPhone 和 iPad。

 $(document).on('keypress', 'input[type="number"]', function (event) {
    return event.code.includes('Digit') || event.code.includes('Numpad') ||  event.code.includes('Period');;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM