屏蔽输入无法在Android手机中运行?

时间:2013-08-26 10:57:31

标签: android jquery jquery-plugins maskedtextbox

我正在使用digitalbush masked input jQuery plugin。它在网络浏览器和iPhone浏览器中运行良好,但它不适用于Android移动设备。

我的问题: 面具是 在输入字段 _ - _ - ___。

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

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

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

由于 普拉萨德。

8 个答案:

答案 0 :(得分:37)

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

  1. 将屏蔽输入更新至至少版本 1.4
  2. type="tel"添加到输入,以触发数字键盘
  3. 删除输入的maxlength属性或将其设置为一定值,以免干扰插入符号操作,例如20

答案 1 :(得分:7)

我尝试使用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');

答案 2 :(得分:2)

这是在不久前修复的,但由于某种原因,网站上发布的分发从未进行过更改。如果您从原始来源获取,修复工作正常:https://raw.githubusercontent.com/digitalBush/jquery.maskedinput/master/src/jquery.maskedinput.js

答案 3 :(得分:2)

在尝试了不同的掩码库(Inputmask,ui-mask,ngMask)之后,我最终使用了jQuery-Mask-Plugin https://igorescobar.github.io/jQuery-Mask-Plugin/,它工作得非常好,并且还很轻巧且记录良好,并且有角度,反应,...样品。

答案 4 :(得分:0)

我遇到了这个问题并通过从asp文本框中删除 type =“number”属性来解决它。在蒙面输入甚至在移动设备上工作之后。

答案 5 :(得分:0)

不再维护问题中使用的库。我将我的应用程序切换到jQuery Mask Input,因为它工作得很好,对前一个库有一个非常类似的基本初始化调用,可以实现极其简单的过渡,并且在本文发布时,jQuery Mask Input定期维护GitHub的。

我的问题是电话号码屏蔽器在输入3或4位数时将光标移回第二个位置。在那之后光标继续变为奇数。使用Chrome post主要版本51的Android平板电脑中使用jQuery Masked Input v1.4.1(旧库)注意到该问题。

答案 6 :(得分:0)

要进一步增强Tony Brasunas的公认答案,请在jquery.maskedinput.js中为第3点添加以下代码段,以动态增加最大长度,以免干扰插入符号动作。

删除输入的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);

答案 7 :(得分: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');
}