屏蔽输入在桌面上工作正常,并且可以在移动设备上使用某些面具

时间:2016-01-13 18:46:53

标签: javascript jquery html5 maskedinput

我正在为两个字段使用屏蔽插件。一个是加拿大邮政编码(T5T 5T5),另一个是电话号码(999-999-9989)。两个面具在桌面上都能正常工作如果您在手机上打开相同的代码,则会出现此问题。当用户输入邮政编码1时,光标会一直跳到光标的开头。

以下是代码:

HTML:

<input type="text" id="someID" /> (T9T 1A1)
<br />
<span id="result"></span>
<br /><br />
<input type="text" id="someOtherID" /> (999-999-9999)
<br />
<span id="result1"></span>

使用Javascript:

$("#someID").mask("a9a 9a9");
$("#someID").on('keyup', function() {
  var actualValue = $(this).val().replace(/[_-\s]/g, '').length;
  if (actualValue === 0 || actualValue !== 6) {
    $("#result").text("not valid")
  } else {
    $("#result").text("valid")
  }
});

$("#someOtherID").mask("999-999-9999");
$("#someOtherID").on('keyup', function() {
  var actualValue = $(this).val().replace(/[_-\s]/g, '').length;
  if (actualValue === 0 || actualValue !== 10) {
    $("#result1").text("not valid")
  } else {
    $("#result1").text("valid")
  }
});

我已在此fiddle附加了Mask插件。

有人见过这个吗?

2 个答案:

答案 0 :(得分:6)

这是一个远景,但请尝试在输入字段中设置autoComplete="off"属性。这可能是与Chrome移动版相关的错误。

Try this.

我的预感基于this issue,虽然报告的情况完全不同,但我认为是指相同的错误。

引用:

  

确实问题是由自动修正引起的。

     

当一个单词被标记为建议时,selectionStart和   selectionEnd没有反映插入位置,但是它们包裹了   整个词,即使插入符号介于两者之间   实际选择已折叠。

我的假设是必须操纵光标才能创建蒙版视觉效果,这样才能很好地连接。

答案 1 :(得分:0)

可能是因为您正在以错误的方式编写 keyup 侦听器

这篇文章的答案是:Jquery keyup not working on Android

更新

嗯......掩码插件本身可能是这个问题的根源......快速浏览一下源代码揭示:

            el.on('input.mask keyup.mask', p.behaviour)
            .on('paste.mask drop.mask', function() {
                setTimeout(function() {
                    el.keydown().keyup();
                }, 100);
            })

所以我猜你可能会试图消除移动设备的怀疑代码,直到你达到理想的效果