JQuery Masked Input Plugin不接受粘贴

时间:2013-01-24 19:40:31

标签: jquery maskedinput

首先,我正在使用:

  • Jquery 1.8.3
  • 屏蔽输入插件1.3.1(插件可以找到here

我的目标:

  • 屏蔽输入字段以仅接受11位数字。但是我希望它接受复制和粘贴的方式,如果我从外部源(例如文本文件)复制只包含11个数字的文本,插件让我粘贴在蒙版输入字段中。

问题:

  • 当我尝试粘贴例如: 03073870970 (11个数字)时,掩码只接受 030738709 (9个数字)。

我该怎么做才能解决这个问题?欢迎任何提示。

5 个答案:

答案 0 :(得分:10)

解决方案:

将占位符从“_”或“”或任何其他占位符更改为“”(空字符串),如下所示:

$(".cpfInput").mask("99999999999",{placeholder:""});

诀窍在于,如果你把任何占位符与空字符串放在不同的位置,插件会用占位符填充输入字段,当你粘贴某些内容时,它会在粘贴你想要粘贴的内容之前不清理它。 / p>

答案 1 :(得分:10)

您无需更改插件。您可以绑定粘贴事件并在粘贴之前清除内容。所以面具不会留下任何空间来阻止你制作粘贴物。

$('input.class').bind('paste', function () { $(this).val(''); });

答案 2 :(得分:4)

另一种解决方案:从输入中删除maxlength属性。插件本身会剪切额外的符号,但您可以正确地从缓冲区粘贴。

答案 3 :(得分:2)

有同样的问题,我找到的最轻松的解决方案,没有删除任何东西(占位符等):

$('input[placeholder]').on('paste', function(){
    $(this).val(' ');
});

作为魅力:)

我找到了另一个解决方案:

$('input[placeholder]').on('paste', function(e){
    e.preventDefault();
    var clipboardCurrentData = (e.originalEvent || e).clipboardData.getData('text/plain');
    window.document.execCommand('insertText', false, clipboardCurrentData);
});

答案 4 :(得分:1)

请尝试使用Formatter.js。我换了这个确切的原因。其另例如,当我从一个窗口转到另一个窗口获取电话号码时,我可能会添加三个号码,更改窗口以获取剩余的号码,然后返回,但是每次更改窗口时屏蔽的输入插件都会清除该字段。令人沮丧的用户体验!