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

    onchange funziona su ff ma non su ie

    Ciao a tutti.
    C'è un modo per far si che con IE quando premo un radio button con l'evento onchange l'azione sia immediata senza dover spostare il focus?

    Siccome ho letto molto in giro e non ho trovato una soluzione accettabile avevo pensato ad una funzione che al onchange spostasse il focus da sola ma non ha effetti.

    Potrebbe essere una soluzione utilizzare l'onclick ma purtroppo trattandosi di un radio con valore numerico, quando continuo a cliccarci sopra quel valore viene moltiplicato all'infinito.

    Vorrei evitare di disabilitare il radio dopo il click se possibile e sicuramente c'è un modo ma non riesco a metterlo in piedi.

    Mi date una mano?

    Grazie

  2. #2
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    olé olé:
    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    
    var level = 0;
    var leaving  = 0;
    
    function run(incoming){
     if(incoming != leaving){
     level++;
     alert(level);
     }
    leaving = incoming;
    }
    </script>
    
    </head>
    <body bgcolor="#008000">
     <h1>Enzaccio' s Page</h1>
    
    <div align="center">
     <input name="choice" value="" type="radio" onclick='run("one");'  >
    
     <input name="choice" value="" type="radio" onclick='run("two");'  >
    
     <input name="choice" value="" type="radio" onclick='run("three");'>
    
    </div>
    
    </body>
    </html>

  3. #3
    Semplicemente perfetto!
    Mi serviva la soluzione ad un problema soltanto ma con questa tua chicca ho risolto molte altre cose.
    Sei un grande grazie davvero tante.

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Il Gestore d' Evento nel richiamarla, passa un argomento/parametro alla funzione; una stringa: onclick='run("mario");' o un integrale: onclick='run(14);' (se stringa vuole gli apici).

    La function nel concludersi, prende una variabile "di campione" e la lascia uguale al parametro arrivato con quel gestore d' evento:

    leaving = incoming;

    La volta che viene richiamata, la function darà esecuzione al core dello script solo se (if) le ritrova non uguali !=

    Occorre che la var leaving; sia dichiarata e che si presenti con un valore iniziale diverso dagli arguments per il primo click; anche dichiarata così va bene, perché assume di default il Valore undefined

    Se le diamo il Valore iniziale uguale ad uno degli argomenti, equivale a inibire il conteggio di un radio per il primo click.


    Ora però dopo tutta questa teoria, si presenta una faccenda: se ricarichi la pagina; non dalla barra indirizzi, ma dal pulsante/opzione Aggiorna/Reload del Browser.
    TUTTI i form-elementi INPUT ceckbox radio text e textarea reagiscono conservando la loro spunta o il testo inserito, mentre le Variabili JS riprendono il loro Valore iniziale.
    Comporta problemi questo per la tua pagina?

  5. #5
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    If page-refresh ...

    Puotesi far intervenire una funzione all' onLoad della pagina, che toglie la spunta in tutto il gruppo di radio, e l' utente capisce che il "gioco" riparte da zero: questa soluzione fa equivalere il refresh al reindirizzamento.

    codice:
    function setUp(){
     for (i=0; i<document.forms[0].choice.length; i++){
        document.forms[0].choice&#91;i&#93;.checked = false;
     }
    }
    </script>
    
    </head>
    <body onload='setUp();'>
     
    <form>
     <input name="choice" .......
    Gli Elementi si danno ora per inseriti in un FORM che JS individua con document.forms[0]
    Con document.forms[1] individueresti un secondo form nella pagina.
    Se "la roba" non è in un form, dovrai invece usare document.getElementsByName("choice") o altro per coordinarli.

  6. #6
    Grandioso. Oltre alla soluzione anche la spiegazione.
    Ho fatto tesoro di quanto hai scritto e non ti nascondo che rosico del tuo sapere.
    Trovo molto ostico javascript ma mi affascina.
    Grazie ancora

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.