Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    onkeydown oppure onkeypress a seconda del browser

    codice:
    if (window.event) 
    	document.onkeydown = tastoPremuto;
    else
    	document.onkeypress = tastoPremuto;
    l'idea era questa: se IE associo tastoPremuto all'evento document.onkeydown, se Firefox, associo la stessa funzione, però all'evento document.onkeypress


    Non funziona. Qualcuno può aiutarmi?
    Pietro

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    A che ti serve? E poi come fai con gli altri browser?

    perche` non usi onkeyup?

    Comunque puoi usare ambedue ed associare delle routine diverse, che andranno a testare:
    if(document.getElementById) ...
    else if(document.all)

    In un caso farai subito return true, nell'altro la funzione.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Spiego. Ho la necessità di intercettare i tasti, ma non solo in IE. Ho notato che ci sono differenze abissali tra IE e FF.
    Per esempio,
    1) è vero che per annullare un tasto in Firefox, il preventDefault funziona solo nell'evento onkeypress?

    2) l'evento onkeypress funziona in modo diametralmente opposto in FF e IE, uno per i tasti normali e l'altro per le freccie... e viceversa.

    insomma, non so da che parte rigirarmi
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    PreventDefault non so cosa sia ...

    Invece so che l'evento onkeyup lavora in modo simile in tutti i browser.
    In realta` onkeypress scatta (in qualche browser) prima che il codice venga scritto nel buffer, per cui non serve per intercettare il tasto.
    onkeydown scatta quando il tasto e` giu`, ma e` un evento "lungo" e potrebbe scattare piu` volte mentre il tasto e` premuto.

    I tasti che hanno un corrispondente ASCII sono definiti completamente dentrogli 8 bit. Gli altri tasti generano due byte, e a seconda dei sistemi l'ordine dei byte puo` cambiare e anche il codice puo` essere diverso.
    Per cui controlla la lettura di due byte (o meglio leggi e svuta tutto il buffer in tutte le situazioni).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Hai ragione, l'evento keyup ha effetto identico nei due browser.
    Però c'è l'altro problema:
    se digito x (codice 88) bisogna annullare l'evento.
    come si fa?
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    se digito x (codice 88) bisogna annullare l'evento.
    Non lo so.
    So come eliminare un carattere da un campo, ma mi pare ceh non stai parlando di un campo.

    pero` ti consiglio una ricerca nel forum: potrebbe gia` esserci la risposta.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Mich_
    Non lo so.
    So come eliminare un carattere da un campo, ma mi pare ceh non stai parlando di un campo.

    pero` ti consiglio una ricerca nel forum: potrebbe gia` esserci la risposta.
    Parola d'onore, se mi fossi chiamato Lisa dagli occhi Blu, ed avessi chiesto: esistono le variabili in javascript?, avrei ricevuto un fantastilione di risposte

    Ritornando alla serietà, tutto quello cho ho imparato sulla programmazione client, lo devo a questo forum, perciò, a te, a xinod, a br1 e a tutti gli altri

    Comunque, io leggo spessissimo le risposte ai varii quesiti: prima o poi troverò quella giusta

    Ciao
    Pietro

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anche se avessi messo miss Italia al posto del tuo transistor ...
    Che paragoni: certo che se la domanda fosse semplice avresti ricevuto risposte.
    Pero` fai domande al limite delle conscenze del forum (evidentemente le cose note al forum le conosci) ...

    Comunque parlavo di fare una ricerca con il bottone in alto a destra. Devi provare alcune parole chiave, ma sono convinto che la risposta c'e`.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Mich_
    Anche se avessi messo miss Italia al posto del tuo transistor ...
    Che paragoni: certo che se la domanda fosse semplice avresti ricevuto risposte.
    Pero` fai domande al limite delle conscenze del forum (evidentemente le cose note al forum le conosci) ...

    Comunque parlavo di fare una ricerca con il bottone in alto a destra. Devi provare alcune parole chiave, ma sono convinto che la risposta c'e`.
    Bah! proviamo com Miss Italia
    Allora, ho preso IE, Firefox, carta e stilografica e ho capito che:
    E' necessario impostare i due eventi, magari a livello di document:
    onkeypress e onkeydown

    onkeypress mi serve per intercettare i tasti normali, ad esempio accettare solo numeri.

    onkeydown mi serve per intercettare i tasti estesi, per esempio, F2, frecce, Esc, Enter...

    non credo che mi serva lanciare un evento e l'altro a seconda del browser, ma, dovendo servire, credo che bisogni attattare l'evento a document, nell'evento onload, e non prima.

    Per essere più chiari, sono in questa situazione:

    Ho una pagina server che assomiglia (molto alla lontana ) ad un foglio Excel. Ho una tabella con n righe e m colonne. Ogni cella contiene un textbox con bordi invisibili che deve contenere solo numeri. L'ultima colonna è la colonna dei totali; l'ultima riga è la riga dei totali; la cella in basso a destra à la cella del totale generale.
    Ebbene, voglio poter navigare con le frecce nelle celle. Voglio digitare solo numeri. Voglio vedere immediatamente i totali di colonna, di riga e generale: il tutto senza passare dal server.

    Pietro

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    OK, la cosa si fa interessante ...

    per gli spostamenti orizzontali, ci sono gia` i tasti tab e shift-tab che lo fanno correttamente.
    Per gli spostamenti vert, la cosa e` piu` complessa.
    Avevo una volta implementato qualcosa, che pero` funzionava solo in IE, e a quel tempo IE6 ancora non c'era.

    ma perche` non usi quattro lettere? Sarebbe piu` semplice e funzionerebbe in tutti i browser ...
    (scusa la digressione)

    A mio parere devi usare l'evento onkeyup.
    Credo che devi applicare l'evento in tutte le celle (cioe` negli input), ma puoi assegnare l'evento via JS, con un loop opportuno
    Per eliminare i tasti che non c'entrano, la cosa e` semplicissima:
    ogg.value = ogg.value.replace(/[^\d]/g, "");
    Se devi accettare anche i punti, la RegExp diventa:
    /[^\d\.]/g
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.