Łapię wklejać wydarzenia z $('selector').on('input', function(event) { ... });
jQuery używając event.preventDefault() z wejściem na („”)
Potem staram się sprawdzić, co zostało wklejone, a jeśli to nie przechodzi walidacji, anuluj wklej z event.preventDefault()
. Niestety, do czasu wykonania funkcji detektora tekst został już wklejony, a event.preventDefault()
nic nie robi.
Jaki jest dobry sposób przechwytywania zdarzeń wklejania, a jeśli to, co zostało wklejone, nie jest sprawdzane, cofnij/zablokuj wklejanie?
Wiem, że mogę użyć .on('paste', function(event) { ... })
, ale to nie daje mi tekstu, który został wklejony lub zawartość elementu wejściowego po wklejeniu, chyba że używam setTimeout()
z pewnym minutowym czasem oczekiwania, a ja chciałbym unikaj używania setTimeout()
.
Czy można utworzyć przykład jsFiddle? – j08691
'event.preventDefault()' zapobiega domyślnej akcji, a po powiązaniu ze zdarzeniem 'input', tak naprawdę nie uniemożliwia wpisywania lub wklejania niczego w danych wejściowych? Podczas buforowania wartości z wklejonej treści, musisz odroczyć ją, aby uzyskać wartość, ale nie "na minutę", ustaw limit czasu na zero, a powinna nadal działać. – adeneo
Domyślam się, że można ustawić limit czasu na "100ms'", aby uchwycić wartość wejścia podczas wklejania i sprawdzania poprawności zamiast "minuty". – SRy