• User

    Script Javascript per form HTML: mi funziona male

    Ciao a tutti. Ho scritto questo script in java script che mi controlla l'input dato da un utente nel form html:

    <script language="javascript">
    <!--
    function Modulo(){
    var giorni = document.modulo.giorni.value;
    var maxup = document.modulo.maxup.value;

    //effettua un controllo sui campi giorni e maxdl
    if(giorni < 0 ){
    	alert("I giorni non possono essere negativi negativi!!");
    	document.modulo.giorni.focus();
    	return false;
    }else if ((giorni > <? echo "$max_giorni_aut" ?>) || (giorni == "") || (giorni == "undefined")){
    	giorni = <? echo "$default_giorni_aut"; ?>;
    	return true;
    }else if (maxup < 0){
    	alert("Il numero Max di download non può essere negativo!!");
    	document.modulo.maxup.focus();
    	return false;
    }else if ((maxup > <? echo "$max_max_up" ?>) || (maxup == "") || (maxup == "undefined")){
    	maxup = <? echo "$default_maxup"; ?>;
    	return true;
    }else{
    	document.modulo.action = "test.php";
    	document.modulo.submit();
    	}
    }
    

    //-->
    </script>

    Il problema è che se scrivo valori che entrano in queste condizioni:

    • else if ((giorni > <? echo "$max_giorni_aut" ?>) || (giorni == "") || (giorni == "undefined"))

    -else if ((maxup > <? echo "$max_max_up" ?>) || (maxup == "") || (maxup == "undefined"))

    non funziona nulla e non avviene il lancio verso test.php...
    Dove sbaglio?
    Scusate se la mia domanda è banale ma ho usato molto poco javascript fino ad ora...
    🙂


  • Moderatore

    Ciao.

    $max_max_up e $max_giorni_aut che valori hanno?
    Dove li prendi? 🙂


  • User

    A si scusa... Li vado a prendere in un file di configurazione dove tengo tutte le costanti, password di accesso a mysql, ecc..
    In pratica le variabili php presenti in quel codice che ho postato sono tutte costanti già fissate con un dato valore. Ma infatti se metto valori che non siano negativi e che non siano (giorni > <? echo "$max_giorni_aut" ?>) oppure (maxup > <? echo "$max_max_up" ?>) questi vengono passati correttamente con POST a test.php; se metto valori negativi giustamente entra in gioco lo script che ferma l'utente avvertendolo. Se invece entro in quelle condizioni con variabili php non funziona nulla. Sbaglio percaso quando riassegno un nuovo valore alle variabili giorni e maxup? Ovvero qui:

    • maxup = <? echo "$default_maxup"; ?>;
    • giorni = <? echo "$default_giorni_aut"; ?>;

  • Moderatore

    Prima di tutto un consiglio al volo.
    Indenta (chissà se si può dire :yuppi: ) il codice, che per capire il senso che hai scritto c'ho messo un boato. :bho:

    Il problema sembra stare nel fatto che tu dai

    if&#40;giorni < 0 &#41;&#123; 
     istruzioni
    &#125; else if &#123;
    altre istruzioni 
    &#125;
    else &#123;
     document.modulo.action = "test.php";
     document.modulo.submit&#40;&#41;; 
    &#125;
    

    .

    In pratica carica il form solo se nessuna delle condizioni di prima son vere, quindi quella che imposti tu, se risulta vera, inibisce la successiva.

    Ragionando un po' potresti fare così:
    controlli le opzioni una per una.
    Se le passa tutte invii il forum-

    If (giorni<0) bla bla e stoppi
    if (maxup <0) istruzioni e stoppi
    if (altre opzioni) come sopra
    document.modulo.submit();

    se passa tutte fai il submit, altrimenti è stoppato.

    Oppure riscrivi più logicamente quegli else, concatendandoli meglio:

    if (giorni<0) {
    return false;
    }
    if (giorni > <? echo "$max_giorni_aut" ?>) {
    giorni = <? echo "$default_giorni_aut"; ?>;
    if (maxup<0) {
    e così via.
    }
    if (maxup >.....) {
    form.submit();
    }
    }

    PS nel codice che hai postato mi sembra ci sia una chiusura graffa di troppo.

    :ciauz:


  • User

    Si effettivamente il codice era messo giù male mi scuso. Ora lo riorganizzato in questo modo; stavolta non si blocca e avviene sempre l'apertura della pagina test, solo non con i valori che voglio. Ti spiego. Questo è il nuovo codice:

    
    <script language="javascript">
    <!--
    	function Modulo&#40;&#41;&#123;
    	var giorni = document.modulo.giorni.value;
    	var maxup = document.modulo.maxup.value;
    	
    	
    	//effettua un controllo sui campi giorni e maxdl
    	if&#40;giorni < 0 &#41;&#123;
    		alert&#40;"I giorni non possono essere negativi negativi!!"&#41;;
    		document.modulo.giorni.focus&#40;&#41;;
    		return false;
    	
    	&#125;else if &#40;maxup < 0&#41;&#123;
    		alert&#40;"Il numero Max di download non può essere negativo!!"&#41;;
    		document.modulo.maxup.focus&#40;&#41;;
    		return false;
    	
    	&#125;else&#123;
    		if &#40;&#40;giorni > <? echo "$max_giorni_aut" ?>&#41; || &#40;giorni == ""&#41; || &#40;giorni == "undefined"&#41;&#41;&#123;
    			giorni = <? echo "$default_giorni_aut"; ?>;
    			&#125;
    		if &#40;&#40;maxup > <? echo "$max_max_up" ?>&#41; || &#40;maxup == ""&#41; || &#40;maxup == "undefined"&#41;&#41;&#123;
    			maxup = <? echo "$default_maxup"; ?>;
    			&#125;
    		document.modulo.action = "test.php";
    		document.modulo.submit&#40;&#41;;
    	&#125;
    &#125;
    //-->	
    </script>	
    
    

    Supponiamo che:
    $max_giorni_aut= 3;
    $default_giorni_aut= 1;

    $max_max_up = 5;
    $default_maxup = 3;

    Se io mettessi dentro i valori: giorni = 10, maxup = 10, questi vengono passati alla pagina di test, ma anche se c'è la condizioni che devono essere ripettivamente minori di 3 e di 5, questi vengo presi lo stesso come 10 e 10. CIoè non funziona la condizione; in più se io lasciassi i campi undefined parte la pagina test che non visualizza nessun valore.
    Help! 🙂