4

首先,我正在使用:

  • jQuery 1.8.3
  • Masked Input Plugin 1.3.1(插件可以在这里找到)

我的目标:

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

问题:

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

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

4

5 回答 5

11

你不需要改变你的插件。您可以绑定粘贴事件并在粘贴之前清除内容。因此,面具不会保留任何空间以防止您制作粘贴。

$('input.class').bind('paste', function () { $(this).val(''); });
于 2014-02-10T12:55:10.593 回答
10

解决方案:

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

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

诀窍是,如果您放置任何不同于空字符串的占位符,插件将使用占位符填充输入字段,并且当您粘贴某些内容时,它不会在粘贴您要粘贴的任何内容之前清理它。

于 2013-01-24T20:01:57.927 回答
4

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

于 2013-10-28T08:19:15.087 回答
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);
});
于 2014-10-24T14:56:40.990 回答
1

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

于 2013-11-13T00:08:00.050 回答