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í:
Komentáře