首先,我正在使用:
- jQuery 1.8.3
- Masked Input Plugin 1.3.1(插件可以在这里找到)
我的目标:
- 屏蔽输入字段以仅接受 11 位数字。但是,我希望它以某种方式接受复制和粘贴,如果我从外部源(例如文本文件)复制仅包含 11 个数字的文本,该插件让我粘贴到蒙面的输入字段中。
问题:
- 当我尝试粘贴例如:03073870970(11 个数字)时,掩码只接受030738709(9 个数字)。
我应该怎么做才能解决这个问题?欢迎任何提示。
首先,我正在使用:
我的目标:
问题:
我应该怎么做才能解决这个问题?欢迎任何提示。
你不需要改变你的插件。您可以绑定粘贴事件并在粘贴之前清除内容。因此,面具不会保留任何空间以防止您制作粘贴。
$('input.class').bind('paste', function () { $(this).val(''); });
解决方案:
将占位符从“_”或“”或任何其他占位符更改为“”(空字符串),如下所示:
$(".cpfInput").mask("99999999999",{placeholder:""});
诀窍是,如果您放置任何不同于空字符串的占位符,插件将使用占位符填充输入字段,并且当您粘贴某些内容时,它不会在粘贴您要粘贴的任何内容之前清理它。
另一种解决方案:从您的输入中删除 maxlength 属性。插件本身会剪切额外的符号,但您将能够正确地从缓冲区粘贴。
有同样的问题,我发现的最轻松的解决方案,没有删除任何东西(占位符等)是:
$('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);
});
请改用Formatter.js。我换了这个确切的原因。另一个原因是围绕不完整字段的不良用户体验。例如,当我从一个窗口转到另一个窗口以获取电话号码时,我可能会添加三个数字,然后更改窗口以获取其余数字,然后返回,但是每次更改窗口时,被屏蔽的输入插件都会清除该字段。令人沮丧的用户体验!