
Vložení ze schránky onpaste
JavaScriptová událost onpaste slouží k odchycení vložení obsahu ze schránky.
U formulářových polí <input>/<textarea>, kde je reálné očekávat, že bude člověk vkládat ze schránky, se hodí toto vložení odchytit. Uživatelé některé údaje kopírují, takže vložení lze současně chápat jako pokyn k validaci.
<input onpaste="vlozeno()">
V novějších prohlížečích (IE 9+) jde místo onpaste použít universálnější událost oninput, která se při vložení ze schránky (Ctrl + V) rovněž vyvolá, ale není z ní přímo patrné, že se jedná o vložení.
Prodleva onpaste
Trošku záludné je chování onpaste v tom, že se událost provede předtím, než se obsah vloží do políčka. Následující kód tedy zobrazí po vložení předchozí hodnotu, což je většinou nežádoucí.
<input onpaste="alert(this.value)">
Řešení je práci s hodnotou pole obalit do časovače.
<input onpaste="
var that = this;
setTimeout(function(){
alert(that.value)
}, 0)
">
Výsledek:
Vzhledem ke složitějšímu programování uvnitř atributu se nabízí obsluhu pro vložení vytvořit jako samostatnou funkci a v atributu ji pouze zavolat – onpaste="vlozit(this)". Pozměněná ukázka se stejnou funkčností:
Související články
JavaScript null a undefined
Rozdíly mezi null a undefined v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.
Sleep v JavaScriptu
Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise a async/await
JavaScript Battery API
Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.