|  | 		    
					
        
         
          
         
	
          | |  | At fange både keycode og button værdi Fra : Rune Jensen
 | 
 Dato :  17-07-09 21:01
 | 
 |  | Jeg ønsker ved onchange at vide, om det er tastetryk eller museklik, som
 har ændret en værdi. Helt nøjagtigt, så skal jeg have fat i værdi 13
 (retur) for keycode og så click-eventen (det skal hægtes på en drop down
 box).
 
 Kan det lade sig gøre?
 
 noget a la
 
 function checkEnterKey (e) {
 var key;
 e = e || window.event;
 
 // hvis museknap, hent værdi
 if (e.button) key = e.button;
 
 // hvis tast, hent værdi
 else if (e.keyCode) key = e.keyCode;
 
 var targetelement ;
 if (e.target) {targetelement = e.target}
 else if (e.srcElement) {targetelement = e.srcElement}
 
 // gå til function gotoPage, hvis (RETUR-tast eller mouseclick)
 if((key == 13 || key == 1) && targetelement.name=='pagenumber') {
 gotoPage(targetelement.selectedIndex) ;
 }
 
 }
 
 ....dette virker naturligvis ikke. Men er der nogen forslag til, hvordan
 man ellers kan gøre det?
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
  Birger Sørensen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Birger Sørensen
 | 
 Dato :  18-07-09 00:17
 | 
 |  | 
 
            Rune Jensen udtrykte præcist:
 > Jeg ønsker ved onchange at vide, om det er tastetryk eller museklik, som har 
 > ændret en værdi. Helt nøjagtigt, så skal jeg have fat i værdi 13 (retur) for 
 > keycode og så click-eventen (det skal hægtes på en drop down box).
 >
 > Kan det lade sig gøre?
 >
 > noget a la
 >
 > function checkEnterKey (e) {
 >       var key;
 >       e = e || window.event;
 >
 >       // hvis museknap, hent værdi
 >       if (e.button) key = e.button;
 >
 >       // hvis tast, hent værdi
 >       else if (e.keyCode) key = e.keyCode;
 >
 >       var targetelement ;
 >       if (e.target) {targetelement = e.target}
 >       else if (e.srcElement) {targetelement = e.srcElement}
 >
 >       // gå til function gotoPage, hvis (RETUR-tast eller mouseclick)
 >       if((key == 13 || key == 1) && targetelement.name=='pagenumber') {
 >          gotoPage(targetelement.selectedIndex) ;
 >       }
 >
 > }
 >
 > ...dette virker naturligvis ikke. Men er der nogen forslag til, hvordan man 
 > ellers kan gøre det?
 >
 >
 > MVH
 > Rune Jensen
 Brug event.type... hvis den eksisterer i IE...
https://developer.mozilla.org/en/DOM/event.type Birger
 -- 
http://varmeretter.dk  - billig, sund og hurtig mad
http://bbsorensen.dk |  |  | 
  Rune Jensen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  18-07-09 02:13
 | 
 |  | 
 
            Birger Sørensen skrev:
 > Brug event.type... hvis den eksisterer i IE...
 > https://developer.mozilla.org/en/DOM/event.type Jeg kan simpelthen ikke forstå den addeventlistener. Ikke fordi, jeg 
 ville vildt gerne lære det, men det er for avanceret for mig.
 Så jeg har fusket, og sat en global variabel, som indeholder keyCode. 
 Det er ikke kønt, og ikke ligefrem noget at være stolt af, men det virker.
 Jeg må så bare se at læse noget mere op på det med addeventlisteners, og 
 så bare lære det hte hard way.. Men tak for svaret Birger, i gør under 
 alle omstændigheder alle et godt arbejde her i gruppen for sådan nogle 
 javascriptnewbies som mig.
 ;)
 MVH
 Rune Jensen
            
             |  |  | 
   Stig Johansen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  18-07-09 05:43
 | 
 |  | Rune Jensen wrote:
 
 > Så jeg har fusket, og sat en global variabel, som indeholder keyCode.
 > Det er ikke kønt, og ikke ligefrem noget at være stolt af, men det virker.
 
 Jeg ved ikke hvordan du ellers vil løse det.
 Hvis du får fat i event typen, er det onchange, hvadenten det er mus eller
 keyboard, der blev brugt forinden.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
    Rune Jensen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  18-07-09 06:23
 | 
 |  | Stig Johansen skrev:
 > Rune Jensen wrote:
 >
 >> Så jeg har fusket, og sat en global variabel, som indeholder keyCode.
 >> Det er ikke kønt, og ikke ligefrem noget at være stolt af, men det virker.
 >
 > Jeg ved ikke hvordan du ellers vil løse det.
 > Hvis du får fat i event typen, er det onchange, hvadenten det er mus eller
 > keyboard, der blev brugt forinden.
 
 Ar, ja. Forskellen ligger i, hvor elegante løsningerne nu er.
 
 Som det er nu, kan jeg ikke tjekke for f.eks. keyCode i en onchange (og
 tro mig, jeg har virkelig gennemtæsket det script for en løsning den
 vej..). Altså, man kan ikke tjekke for to events på samme tid. Jeg har
 læst, det burde være lige så nemt med JS som med CSS, fordi det er den
 samme DOM, som man manipulerer - men det passer ikke helt. I CSS, der
 ville man kunne lave noget a la:
 
 ::onchange::onclick
 
 ...sådan med pseudoCode. Altså definer stilen for et element, hvis værdi
 er ændret med et onclick. Men du kan ikke i JS tjekke for en onclick i
 en onchange - umiddelbart. Man kunne også tage mere realistisk, et a,
 som er aktiveret mål for et andet link (det er target), som der bliver
 hoveret over:
 
 a::target::hover
 
 Hvad jeg læste af Birgers svar var, at man ville kunne have netop dette
 lille nummer og tjekke på to eventlisteners samtidig med addevent, og på
 en eller anden måde synes jeg det er pænere (viser man har kontrol med
 det). Og så er det også vejen til diskret/unobtrusive javascript,
 selvfølgelig.
 
 Men det virker med en global vasriabel, og det virker så jeg forstår
 det, så..
 
 ;)
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
     Rune Jensen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  18-07-09 06:50
 | 
 |  | Rune Jensen skrev:
 
 > a::target::hover
 
 W3C er som sædvanligt bedre til at forklare den del:
 
 "An example of combining dynamic pseudo-classes:
 a:focus
 a:focus:hover
 
 The last selector matches a elements that are in the pseudo-class :focus
 and in the pseudo-class :hover."
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
      Stig Johansen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  18-07-09 11:05
 | 
 |  | Rune Jensen wrote:
 
 > W3C er som sædvanligt bedre til at forklare den del:
 
 Sikkert :)
 
 > "An example of combining dynamic pseudo-classes:
 > a:focus
 > a:focus:hover
 
 Men 'os', der har arbejdet med events siden windows 3.11 véd, at der ingen
 'historik er i events.
 
 Hvis vi tager f.eks en onchange, der bliver forårsaget af enten en key
 event, eller en mouse event, så er rækkefølgen ca.
 * Key:
 - OnKeydown
 - OnkeyPress
 - OnChange
 - OnKeyUp
 ...
 * Mouse
 - OnMouseDown
 - OnChange
 - OnMouseUp
 ...
 
 Hæng mig ikke op på den faktiske rækkefølge, men:
 Hver event er en afsluttet handling(funktionskald), og man kan ikke i f.eks.
 en onchange 'spore' hvilke events, der ligger forud.
 
 Hvis du vil have historik på de forudgående events, så må du selv
 implementere en 'history-stack'.
 
 Hvad du vil bruge det til forstår jeg ikke rigtigt, men jeg er heller ikke
 så kvik.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
       Rune Jensen (18-07-2009) 
 
	
          | |  | Kommentar Fra : Rune Jensen
 | 
 Dato :  18-07-09 13:12
 | 
 |  | Stig Johansen skrev:
 > Rune Jensen wrote:
 >
 >> W3C er som sædvanligt bedre til at forklare den del:
 >
 > Sikkert :)
 
 Well, de er da vant til at skulle forklare sig om ikke andet ;)
 
 >> "An example of combining dynamic pseudo-classes:
 >> a:focus
 >> a:focus:hover
 >
 > Men 'os', der har arbejdet med events siden windows 3.11 véd, at der ingen
 > 'historik er i events.
 <SNIP Forklaring på events ikke-historik>
 
 Ja, se det vidste jeg så ikke... så stiller sagen sig nok lidt
 anderledes. Trods alt.
 
 > Hvis du vil have historik på de forudgående events, så må du selv
 > implementere en 'history-stack'.
 
 Næh, egentlig ikke. Formålet var at opnå det, jeg beskrev. Unobtrusive
 JS er bare en fiks idé, hvis det er det du mener.
 
 > Hvad du vil bruge det til forstår jeg ikke rigtigt, men jeg er heller ikke
 > så kvik.
 
 Nåh-nåh.
 
 God sommer-weekend og tsk for svarene, joh, jeg lærte noget også i dag,
 så ;)
 
 
 MVH
 Rune Jensen
 
 
 |  |  | 
 |  |