Avatar billede Slettet bruger
27. august 2010 - 16:44 Der er 12 kommentarer og
1 løsning

Event for ændring af tekst i input-tekstfelt?

Mjallo,

Findes der et event for ændring af tekst i et input-tekstfelt (input type="text")?
Jeg har prøvet onchange, men den bliver kun invoked, når input-elementet mister fokus efter ændring, hvilket ikke egner sig til formålet - jeg skal bruge en event, der bliver invoked øjeblikkeligt ved ændring af input.

Tak.
Avatar billede larsen45 Juniormester
27. august 2010 - 16:59 #1
Forstår ikke spørgmålet helt, du har en tekst boks, hvor der står nået tekst i forvejen, når du sætter muse markøring ind i tekst feltet fjernes teksten.

Du vil så gerne vise en 2 tekst i feltet.
Avatar billede Slettet bruger
27. august 2010 - 17:23 #2
Nej, jeg skal bruge et event, der invokes, så snart brugeren udfører en vilkårlig redigering af teksten i et tekstfelt.
Avatar billede larsen45 Juniormester
27. august 2010 - 17:49 #3
altså en pop up boks ligesom snart en bruger har redigeret tekstfeltet.

<script>
function inform(){
alert("du har aktiveret mig")
}
</script>

<form>
<input type="button" name="test" value="klik mig" onclick="inform()">
</form>

eller
Avatar billede caturn Nybegynder
27. august 2010 - 18:07 #4
Onclick invoker jo uden ændring af teksten. Hvad med denne?

<input type="text" name="tekst" onKeyUp="inform()">
Avatar billede Slettet bruger
27. august 2010 - 18:17 #5
Det skal lige siges, at det er HTML5. Er onkeyup gyldig der?
Jeg tester lige, om det virker.
Avatar billede Slettet bruger
27. august 2010 - 18:31 #6
Det lader til at fungere nogenlunde, men resultatet er ikke helt rammende nok; hvis jeg f.eks. trækker indhold ind i feltet, invokes eventen selvfølgelig ikke, hvilket er problematisk. Er der ikke en decideret oncontentchanged-lignende metode?
Avatar billede Slettet bruger
27. august 2010 - 22:43 #7
Nej, men du kan jo sagtens tilknytte kode til flere events: onfocus, onchange og onkeyup
Avatar billede Slettet bruger
27. august 2010 - 22:53 #8
God damn, JavaScript er elendigt.
Anyhow, findes der så en event, der reagerer på paste? Hvordan håndterer jeg tekst trukket ind i feltet?
Avatar billede mclemens Nybegynder
28. august 2010 - 16:21 #9
Kører en timeout check på elementet ?
... 100 ms. er måske for højt sat ...

(Paste via rediger, sætind kan du ikke fange på anden måde)


<script type="text/javascript">
window.onload=function(){
setTimeout("chk('"+document.getElementById("noget").value+"')",100);
}

function chk(v){
  if(document.getElementById("noget").value!=v){
    alert("Gør noget");
  }else{
    setTimeout("chk('"+v+"')",100);
  }
}
</script>
Avatar billede Slettet bruger
28. august 2010 - 17:44 #10
Ugh... Oh, well, hvis det er den eneste dækkende løsning - men kønt er det sgu ikke! ;)
Avatar billede mclemens Nybegynder
28. august 2010 - 21:24 #11
Alle andre måder kan dækkes ind af

onmouseover (marker tekst med mus, hold
venstre knap inde og træk tekst op - og giv slip)

onmouseup (sætind via contentmenu)

onkeyup (input - sætind via tastetur)


... og så måske onchange på til
nød-håndtering af rediger - sætind.
Avatar billede Slettet bruger
26. september 2010 - 09:20 #12
Det må vel slå an så...
Men jeg ville godt nok ønske, at systemet var mere gennemført.
Rant over.

Smid et svar :)
Avatar billede mclemens Nybegynder
26. september 2010 - 09:53 #13
Her er et svar :)

... og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester