Campo com máscara não permite colar texto


(Brunosalmeida) #1

Galera, preciso de ajuda. Tenho um campo de cnpj com a mascara tradicional de cnpj:

$('#Estabelecimento_Documento').mask('99.999.999/9999-99');

O que esta acontecendo é que ao copiar o numero de CNPJ e colo no campo. Só os dois primeiros dígitos são colados.

Alguém sabe como resolvo isso?


(Rômulo Bastos) #2

@brunosalmeida, dá uma olhada nesse link do StackOverflow.

Talvez te ajude a resolver. Lá eu achei umas soluções tipo essas:

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

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

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

Espero que ajude.
Abraço! :v:


(Brunosalmeida) #3

Eu vi esse link antes de criar o post. Não funcionou =(
No exemplo da mascara de cnpj ele cola só os dois primeiros números da mascara. Vou tentar outro plugin.
Se der certo posto a solução aqui. =P


(Rômulo Bastos) #4

Blz, @brunosalmeida!

Fiz um teste, salvei no JSFiddle e consegui colar o CNPJ lá (com e sem pontos, traço e hífen).

Vê se serve pro seu projeto também, cara!
Boa sorte aí!

Abraço! :v:


(Brunosalmeida) #5

@romulobastos eu fiz assim também e realmente assim fora de um contexto funciona. Quando coloca dentro do contexto da minha aplicação é que para de funcionar. De qualquer forma eu resolvi o problema usando jquery.inputmask ela faz a mesma coisa que a jquery.maskedinput mas no meu contexto funcionou melhor que essa ai.

Ficou assim a solução:

 $('#Estabelecimento_TipoDocumentoID').change(function () {
                    switch ($(this).val()) {
                        case '@((int)Core.Entities.Estabelecimento.TipoDocumentos.CNPJ)':
                            $('#Estabelecimento_Documento').inputmask('remove');
                            $('#Estabelecimento_Documento').inputmask('99.999.999/9999-99');
                            break;
                        case '@((int)Core.Entities.Estabelecimento.TipoDocumentos.CPF)':
                            $('#Estabelecimento_Documento').inputmask('remove');
                            $('#Estabelecimento_Documento').inputmask('999.999.999-99');
                            break;
                    }
                    $('#Estabelecimento_Documento').focus();
            })

Vlw cara!


(Rômulo Bastos) #6

Ótimo!
Valeu por compartilhar, Bruno.


(Vitor Melo) #7

Nunca precisei usar não, mas já deixei nos favoritos, obrigado!