Sto cattura di eventi in pasta con $('selector').on('input', function(event) { ... });
jQuery utilizzando event.preventDefault() con il ('input')
Poi sto cercando di testare ciò che è stato incollato e se non passa la convalida, annullare la incolla con event.preventDefault()
. Sfortunatamente, quando viene eseguita la funzione listener, il testo è già stato incollato e event.preventDefault()
non esegue nulla.
Quindi qual è un buon modo per catturare gli eventi Incolla e se ciò che è stato incollato non convalida, annulla/previ l'incolla?
So che posso usare .on('paste', function(event) { ... })
, ma questo non mi dà il testo che è stato incollato o il contenuto dell'elemento di input dopo l'incolla, a meno che io non usi setTimeout()
con qualche minuto di attesa, e mi piacerebbe evitare l'uso di setTimeout()
.
Puoi creare un esempio jsFiddle? – j08691
'event.preventDefault()' impedisce l'azione predefinita e, quando si associa all'evento 'input', non ti impedisce realmente di digitare o incollare qualcosa in un input? Quando si memorizza nella cache il valore del contenuto incollato, sarà necessario differirlo per ottenere un valore, ma non "qualche minuto", impostare il timeout su zero e dovrebbe comunque funzionare. – adeneo
Suppongo che sia ok se si imposta il timeout di '100ms' per acquisire il valore di un input su paste e validare piuttosto che un' minuto'. – SRy