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

    [onChange] select -> option -> alert

    Ciao a tutti,

    ho una lista a tendina e vorrei una volta che seleziono una voce che mi venga fuori un alert...

    ho fatto questa funzione che poi richiamo tramite onChange... ma mi mostra sempre il primo alert in tutti i casi...

    codice:
    <script language="javascript" type="text/javascript">
    
    function moltiplicatori() {
    
    	with(document.modulo) {
    
    	if(value="1") {
    	alert('Hai scelto il moltiplicatore annuale 1');
    	return false;
    	}
    
    	if(value="6") {
    	alert('Hai scelto il moltiplicatore semestrale 6');
    	return false;
    	}
    
    	if(value="12") {
    	alert('Hai scelto il moltiplicatore mensile 12');
    	return false;
    	}
    
       }
    
    return true;
    
    }
    
    </script>
    
    ...
    
    <form name="modulo">
    
    ...
    
    <select name="Campo1_Moltiplicatore" size="1" onChange="return moltiplicatori()">
    
    <option value="1">1</option>
    <option value="6">6</option>
    <option value="12" selected>12</option>
    </select>
    
    ...
    
    </form>
    dove sbaglio?

  2. #2
    l'operatore di controllo e' ==, non =
    quindi il codice deve essere

    function moltiplicatori() {

    with(document.modulo) {

    if(value=="1") {
    alert('Hai scelto il moltiplicatore annuale 1');
    return false;
    }

    if(value=="6") {
    alert('Hai scelto il moltiplicatore semestrale 6');
    return false;
    }

    if(value=="12") {
    alert('Hai scelto il moltiplicatore mensile 12');
    return false;
    }

    }

    return true;

    }

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    se ti serve un alert puoi fare così

    codice:
    <html>
    <body>
    <select name="Campo1_Moltiplicatore" size="1" onChange="if (this.value != '') alert('Hai scelto '+this.value);">
    <option selected="selected" value="">Scegli</option>
    <option value="1">1</option>
    <option value="6">6</option>
    <option value="12">12</option>
    </select>
    </body>
    </html>
    Nota che se devi usare l'onchange, nel tuo codice non puoi selezionare direttamente l'opzione 12, ma devi fare una selezione intermedia: quindi ti conviene usare una scelta vuota di default come ho fatto io.




    @MDM
    non mi sembra che quella soluzione sia molto performante... se la lista avesse 100 moltiplicatori li controlli con 100 costrutti if?? VVoVe:
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    l'operatore di controllo e' ==, non =
    mmm dici? Perché se cambio = con == non mi restituisce in nessun caso, nessun alert

  5. #5
    Grazie fcaldera

    però caspita a me serviva proprio lasciare l'opzione 12 di default :master:

    amen

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il punto è che l'evento onchange si scatena al cambio di valore nella select...

    tu puoi anche lasciare di default l'opzione 12 se vuoi, solo che in quel modo non vedrai l'alert "hai selezionato... 12".

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Ah ok, no perfetto... va bene così

    Grazie ancora

  8. #8
    Originariamente inviato da fcaldera
    @MDM
    non mi sembra che quella soluzione sia molto performante... se la lista avesse 100 moltiplicatori li controlli con 100 costrutti if?? VVoVe:
    si fcaldera, me ne ero accorto ma proprio perchè erano solo 3 controlli ho fatto prima cosi'. Cmq la tua soluzione è sicuramente + pulita.

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.