Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Semplice funzioncina Javascript

    ..ma non per me che sono alle prime armi.

    Volevo abbinare ad un campo testo una funzione che mi permettesse, tramite l'utilizzo della freccia sù e di quella giù, di incrementare o decrementare il valore del text.
    Faccio un esempio: ho un text con scritto 5 premendo la freccia in sù deve diventarmi un 6, in giù deve diventarmi un 4.

    Mi aiutate per favore?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In teoria e` possibile, in pratica l'implementazione dipende dal browser, per cui e` molto difficile da realizzare.

    Per farlo devi usare gli eventi onKeyUp (o onKeyDown o onKeyPress).

    Se vuoi farti un'idea della complessita` guarda il thread sugli eventi da tastiera, incluso nella lista dei link utili (in testa al forum). Il thread e` vecchio, in quanto non prende in considerazione i browser moderni (usciti dopo), in particoalre Moz e Ns6+ .

    Piu` semplice sarebbe realizzarlo con dei tasti ascii, tipo alt+P - alt+N, perche` sfruteresti le abbreviazioni da tastiera; oppure i tasti + e - che hanno un codice uguale in tutti i browser.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Io sto sviluppando pagine che andranno obbligatoriamente su IE5, quindi non dovrei avere problemi...

    Ma come faccio a mettere entrambi gli eventi sul text?

    mettendo

    <input type="text" name="campo1" onKeyDown='Tastogiu' onKeyUp='Tastosu'>

    funziona così?

    Poi dovrei riuscire a rendere le due funzioni parametriche, passandogli qual'è il campo su quale deve agire la funzione...

    Come faccio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Eventi da tastiera ti conviene usarne solo uno. Non ha senso usare sia il KeyDown che il KeyUp.

    Se ti basta per IE, allora in quel thread che ti ho segnalato trovi la sintassi da usare, che funziona se il SO e il tipo di hardware sono sempre gli stessi.

    La sintassi dell'evento e` di questo tipo:

    <input type="text" name="campo1" onKeyUp="tastosu(this);">

    Dentro le virgolette dell'attributo dell'evento il browser si aspetta del codice JS. In questo caso ci ho messo una chiamata ad una funzione, ed ho passato l'oggetto del campo.

    La corrispondente funzione dovrebbe essere del tipo:

    function tastosu(tt) {
    ... dove tt corrisponde a document.NOMEFORM.NOMECAMPO , qualsiasi sia il campo dove e` stato premuto il tasto.

    Nella funzione devi gestire l'evento.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ho letto il link, grazie.

    Ricapitolando, richiamo la funzione con onKeyUp='piumeno(this)'
    e poi nella funzione riesco tramite event.keycode a sapere se ha premuto freccia su o freccia giù.

    Il this hai detto che corrisponde a document.nomeform.nomecampo quindi in pratica se mi preme tasto su devo scrivere:

    tt.value=tt.value-1

    E' Ok?

    Grazie per l'aiuto!

  6. #6
    ho provato a mettere in pratica però...

    se faccio per esempio un alert che mi restituisce event.keycode
    mi restituisce undefined....

    Perchè?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Posta qui lo script, e il codice HTML con cui lo chiami.

    I campi di input devono essere inseriti in un tag <form>

    E` un po' che non lavoro piu` con i tasti, ma forse riesco a ricordarmi qualcosa, se vedo del codice.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    <input value="0" onkeyup="if(event.keyCode==38) this.value++; else if(event.keyCode==40) this.value--; else this.value=parseInt(this.value);">
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  9. #9
    Mi inchino davanti a cotanta conoscenza!!!

    Grazie

    PS Comunque c'ero arrivato è solo che avevo messo keycode minuscolo.... arriverò ad imparare che è case sensitive!

  10. #10
    Originariamente inviato da Kostia
    Mi inchino davanti a cotanta conoscenza!!!

    Grazie

    PS Comunque c'ero arrivato è solo che avevo messo keycode minuscolo.... arriverò ad imparare che è case sensitive!
    non c'è di che..
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

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.