我正在使用digitalbush masked input jQuery plugin。它在网络浏览器和iPhone浏览器中运行良好,但它不适用于Android移动设备。
我的问题: 面具是 在输入字段 _ - _ - ___。
当我输入数字时,它将是12345685555 ___- -
示例:http://rossbender.com/temp/mask.html
有什么建议吗?我该如何解决这个问题?
由于 普拉萨德。
答案 0 :(得分:37)
我通过三个操作解决了这个问题,这些操作修复了所有Android 4.0+手机:
type="tel"
添加到输入,以触发数字键盘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');
}