36

我正在使用digitalbush 屏蔽输入 jQuery 插件。它在网络浏览器和 iPhone 浏览器中运行良好,但不适用于 Android 移动设备。

我的问题:掩码在输入字段_ - _ - ___ 中。

当我输入数字时,它将 12345685555___- -

示例:http ://rossbender.com/temp/mask.html

有什么建议么?我该如何解决这个问题?

谢谢普拉萨德。

4

9 回答 9

48

我通过三个操作解决了这个问题,这些操作已经为所有 Android 4.0+ 手机解决了这个问题:

  1. 将 masked-input 更新到至少1.4版
  2. 添加type="tel"到输入,触发数字键盘
  3. 删除输入的maxlength属性或将其设置为一定不会干扰插入符号操作的值,例如20.
于 2015-04-03T18:09:32.770 回答
8

我尝试使用 Jonathan Rowny 提到的原始脚本,但我在 S3 - Chrome 浏览器上仍然遇到同样的问题。我认为这与输入type="tel"和/或有关type="number"。我最终不得不使用另一个插件。http://igorescobar.github.io/jQuery-Mask-Plugin/

jquery-mask(不要与jquery-masked-input混淆)非常相似,但语法略有不同。希望这可以帮助其他人解决这个问题。

jquery-masked-input 语法: $("#phone").mask("(999) 999-9999");

VS

jquery-mask 语法:('#phone').mask('(000) 000-0000');

于 2014-10-20T19:52:16.847 回答
3

这在不久前已修复,但由于某种原因,发布在网站上的发行版从未接受过更改。如果您从原始源中获取,则修复有效:https ://raw.githubusercontent.com/digitalBush/jquery.maskedinput/master/src/jquery.maskedinput.js

于 2014-09-18T07:00:33.180 回答
3

在尝试了不同的掩码库(Inputmask、ui-mask、ngMask)之后,我最终使用了 jQuery-Mask-Plugin https://igorescobar.github.io/jQuery-Mask-Plugin/,它工作得很好,而且轻量级并且有据可查并且有 angularjs, react ,... 样本。

于 2017-07-29T07:55:12.663 回答
1

问题中使用的库不再维护。我将我的应用程序切换到了jQuery Mask Input,因为它运行良好,与以前的库有一个非常相似的基本 init 调用,使得转换非常容易,并且在本文发布时,jQuery Mask Input定期在 GitHub 上维护。

我的问题是当输入 3 或 4 位数字时,电话号码掩码器将光标移回第二个位置。在那之后,光标继续奇怪。在使用 Chrome 发布主要版本 51 的 Android 平板电脑中使用 jQuery Masked Input v1.4.1(旧库)时发现了该问题。

于 2018-03-12T00:47:38.013 回答
0

我刚刚遇到了这个问题,并通过从 asp 文本框中删除属性type="number"来解决它。之后,屏蔽输入甚至可以在移动设备上使用。

于 2013-11-05T00:34:52.917 回答
0

通过使用 1.4.1 并将最大长度设置为一加掩码中的字符数,它对我有用。掩码限制了实际输入,最大长度 +1 解决了无法在字段中输入数字的问题。

于 2022-01-29T15:58:17.287 回答
0

这可以是一个快速修复:

var ua = navigator.userAgent;
var isAndroid = /Android/i.test(ua);
var isChrome = /Chrome/i.test(ua);

// Fix masking on Chrome for mobile devices
if (isAndroid && isChrome) {
    $('.price_input').attr('type','tel');
}     
于 2020-10-12T16:10:30.500 回答
0

为了进一步增强 Tony Brasunas 接受的答案,请在 jquery.maskedinput.js 中为第 3 点添加以下代码段以动态增加 maxlength,这样它就不会干扰插入符号的操作。

删除输入的 maxlength 属性或将其设置为一定不会干扰插入符号操作的值,例如 20。

    defs = $.mask.definitions;
    tests = [];
    partialPosition = len = mask.length;
    firstNonMaskPos = null;

    //insert snippet below
    if (chrome && android) {
        console.log("chrome && android");
        var allAllowedRegExps = '';
        jQuery.each(defs, function (key, value) {
            allAllowedRegExps = allAllowedRegExps + key;
        });
        allAllowedRegExps = allAllowedRegExps.replace(/\[/g, '');
        allAllowedRegExps = allAllowedRegExps.replace(/\]/g, '');
        allAllowedRegExps = '[^' + allAllowedRegExps + ']';
        var re = new RegExp(allAllowedRegExps, "g");
        var actual = mask;
        var replacedVal = actual.replace(re, "");
        var actualValue = actual.length - replacedVal.length;
        if ($(this).attr('maxlength') !== undefined) {
            $(this).attr('maxlength', parseInt(this.attr('maxlength')) + parseInt(actualValue));
        }
   }

    mask = String(mask);
于 2020-01-29T13:10:27.173 回答