5

First of all, I'm using:

  • Jquery 1.8.3
  • Masked Input Plugin 1.3.1 (The plugin can be found here)

My goal:

  • Mask an input field to accept only 11 numeric digits. However I want it to accept copy and paste in a way that if I copy a text containing only 11 numbers from an external source (e.g text file), the plugin let me paste in the masked input field.

The problem:

  • When I try to paste for example: 03073870970 (11 numbers), the mask only accepts 030738709 (9 numbers).

What should I do to solve this? Any tips are welcome.

jguilhermemv
  • 769
  • 3
  • 11
  • 28

5 Answers5

12

You dont need to change your plugin. You could bind paste event and clear the content just before the paste. So the mask wont be keeping any spaces to prevent you from making your paste.

$('input.class').bind('paste', function () { $(this).val(''); });
Demeter Dimitri
  • 608
  • 8
  • 17
11

Solution:

Change the placeholder from "_" or " " or any other placeholder to "" (empty string), as below:

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

The trick is that if you put any placeholder different of an empty string, the plugin will fill the input field with the placeholder and when you paste something it doesn't clean it before pasting whatever you're trying to paste.

jguilhermemv
  • 769
  • 3
  • 11
  • 28
4

Another solution: remove maxlength attribute from your input. plugin cuts extra symbols itself, but you will be able to paste from buffer correctly.

2

Had the same issue, the most painless solution I found, without removing anything (placeholders, etc) is:

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

Works as a charm :)

One more solution I found:

$('input[placeholder]').on('paste', function(e){
    e.preventDefault();
    var clipboardCurrentData = (e.originalEvent || e).clipboardData.getData('text/plain');
    window.document.execCommand('insertText', false, clipboardCurrentData);
});
Kaloyan Kosev
  • 12,483
  • 8
  • 59
  • 90
1

Try Formatter.js instead. I switched for this exact reason. Another reason was bad UX surrounding incomplete fields. When I go from one window to another to get a phone number, for instance, I might add three numbers, change windows to get the rest of the number, then return, but the masked input plugin clears the field each time I change windows. Frustrating UX!

Chris Geirman
  • 9,474
  • 5
  • 37
  • 70