Estou procurando uma maneira de higienizar as entradas que colo no navegador, isso é possível com o jQuery?
Eu consegui chegar a isso até agora:
$(this).live(pasteEventName, function(e) {
// this is where i would like to sanitize my input
return false;
}
Infelizmente, meu desenvolvimento chegou a um ponto insuportável por causa desse problema "menor". Eu realmente me faria um campista feliz se alguém pudesse me indicar a direção certa.
Respostas:
OK, acabei de esbarrar no mesmo problema. Percorri o longo caminho
Apenas um pequeno tempo limite até que a função .val () possa ser preenchida.
E.
fonte
Você pode realmente pegar o valor diretamente do evento . É um pouco obtuso como chegar até lá.
Retorne false se você não quiser que ele continue.
fonte
e.clipboardData.getData('text')
em JavaScript simples.Para compatibilidade entre plataformas, ele deve manipular os eventos oninput e onpropertychange:
fonte
Eu meio que corrigi usando o seguinte código:
Agora eu só preciso armazenar a localização do sinal de intercalação e anexar a essa posição, então estou pronto ... eu acho :)
fonte
.find(':focus')
e sabendo que esse elemento determina a localização do cursor. Veja isso .input
faz a diferença :) Eu normalmente têm estes em meus eventos de caixa de textokeyup keydown paste input
, mas, obviamente, depende do que seus motivos sãoHmm ... acho que você pode usar
e.clipboardData
para pegar os dados que estão sendo colados. Se não der certo, dê uma olhada aqui .fonte
Ouça o evento de colar e defina um ouvinte de evento de keyup. No keyup, capture o valor e remova o ouvinte de evento do keyup.
fonte
Vai funcionar bem.
fonte
Isso está se aproximando do que você pode querer.
Observe que, quando o objeto clipboardData não é encontrado (em navegadores que não sejam o IE), você está atualmente obtendo o valor total do elemento + o valor da área de transferência.
Provavelmente, você pode executar algumas etapas extras para diferenciar os dois valores, antes de uma entrada e após a entrada, se realmente estiver somente após os dados que foram realmente colados no elemento.
fonte
Isso funcionará para o evento de colagem do mouse.
fonte
Que tal comparar o valor original do campo e o valor alterado do campo e deduzir a diferença como valor colado? Isso captura o texto colado corretamente, mesmo se houver texto existente no campo.
http://jsfiddle.net/6b7sK/
fonte
Este código está funcionando para mim, cole com o botão direito ou cole cópia direta
Quando colar
Section 1: Labour Cost
, torna-se1
na caixa de texto.Para permitir apenas o valor flutuante, eu uso esse código
fonte
Mais distante:
fonte
Veja este exemplo: http://www.p2e.dk/diverse/detectPaste.htm
Ele rastreia essencialmente todas as alterações com o evento oninput e verifica se é uma comparação colar por string. Ah, e no IE há um evento de pasta. Assim:
fonte
Este método usa jqueries contents (). Desembrulhar ().
Após um determinado tempo limite, verifique todo o conteúdo, desembrulhando as tags que não possuem a classe que você definiu anteriormente. Nota: Este método não remove as tags de fechamento automático como
Veja um exemplo abaixo.
fonte
Isso provou ser bastante ilusório. O valor da entrada não é atualizado antes da execução do código dentro da função de evento colar. Tentei chamar outros eventos da função de evento colar, mas o valor de entrada ainda não é atualizado com o texto colado na função de qualquer evento. Isso é todos os eventos além do keyup. Se você chamar keyup de dentro da função de evento de colagem, poderá limpar o texto colado de dentro da função de evento de keyup. igual a...
Há uma ressalva aqui. No Firefox, se você redefinir o texto de entrada em cada keyup, se o texto for maior que a área visível da largura de entrada permitida, a redefinição do valor em cada keyup interromperá a funcionalidade do navegador que rola automaticamente o texto para a posição de cursor na posição fim do texto. Em vez disso, o texto volta ao início, deixando o cursor fora de vista.
fonte
Script para remover caracteres especiais de todos os campos com a classe portlet-form-input-field:
fonte
fonte