Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Disabilitare una select in base ad un valore

    Salve ragazzi,
    premetto che non esperienza in Javascript se non per le cose proprio elementarissime! Il problema è questo. Ho un form con una select. Vi posto il codice:

    Codice PHP:
    <TD align="center"><?php if ($array['disponibilitatavoli']==0){echo "no";}else{echo"si";}?></TD>
    <TD align="center"><?php echo "$array[prezzotavoli]";?></TD>
    <TD><SELECT NAME="numerotavoli" onchange="calcolatotale();";>
    <OPTION>0</OPTION>
    <OPTION>1</OPTION>
    <OPTION>2</OPTION>
    <OPTION>3</OPTION>
    <OPTION>4</OPTION>
    <OPTION>5</OPTION>
    </SELECT>
    Come vedete c'è una riga in php. In pratica quel campo si pesca un dato "disponibilita" dal database. Se è pari a zero mi scrive disponibilità no. Altrimenti si. Ora, quel che vorrei è semplice a dirsi, ma non so a farsi. In pratica vorrei che quando la condizione è pari a zero, venga disabilitata la select, in modo che l'utente non abbia più modo di scegliere un numero di biglietti.

    Mi hanno suggerito il javascript, potete suggerirmi qualcosa di semplice e facilmente comprensibile? Grazie mille!!

    p.s. come vedete c'è anche un "onchange" che mi serve per calcolare un totale. Ma questo credo non importi.

  2. #2
    Non è più conveniente farlo direttamente in php? Ad esempio non facendo proprio stampare la select nel caso in cui la disponibilità sia "no"?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Probabilmente sarebbe più conveniente,
    ma mi toccherebbe inglobare l'html all'interno del php e quindi modificare tutto il form. Con java non c'è una possibilità semplice e comprensibile?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi nessun suggerimento?

  5. #5
    scusa se insisto, ma sinceramente lascerei pedere javascript e farei così in php:

    Codice PHP:
    <TD align="center"><?php if ($array['disponibilitatavoli']==0){echo "no";}else{echo"si";}?></TD>
    <TD align="center"><?php echo "$array[prezzotavoli]";?></TD>
    <TD>
    <?php if ($array['disponibilitatavoli']!=0){ ?>
    <SELECT NAME="numerotavoli" onchange="calcolatotale();">
    <OPTION>0</OPTION>
    <OPTION>1</OPTION>
    <OPTION>2</OPTION>
    <OPTION>3</OPTION>
    <OPTION>4</OPTION>
    <OPTION>5</OPTION>
    </SELECT> 
    <?php ?>
    se poi vuoi proprio javascript bisognerebbe vedere più codice per trovare una soluzione che comunque sarebbe meno elegante e facilmente aggirabile...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ho seguito il tuo consiglio,
    ho utilizzato il php. A funzionare funziona, più che bene. Ma c'è un grosso problema. Vedi che nella select c'è un "onchange" che rimanda ad una funzione java?

    Bene, praticamente se la quantità della disposinibilità diventa zero, la funzione non va più. Cioè, posso acquistare 3 prodotti: biglietti interi, ridotti e tavoli. Se solo una diventa pari a zero, la funzione java salta e non mi calcola il totale per gli altri due prodotti. Quella funzione è la seguente:

    <SCRIPT language="JavaScript">

    function calcolatotale() {

    var a = document.forms[0].numerointeri.options[document.forms[0].numerointeri.selectedIndex].text;
    var b = document.forms[0].numeroridotti.options[document.forms[0].numeroridotti.selectedIndex].text;
    var c = document.forms[0].numerotavoli.options[document.forms[0].numerotavoli.selectedIndex].text;
    var d = ("<? echo "$array[prezzointeri]";?>");
    var e= ("<? echo "$array[prezzoridotti]";?>");
    var f = ("<? echo "$array[prezzotavoli]";?>");

    var g= (a * d) + (b * e) + (c * f);

    document.forms[0].totale.value=g;

    }

    function cancella() {

    document.forms[0].totale.value="";
    document.forms[0].numero.selectedIndex=0;

    }

    </SCRIPT>


    mi calcola il totale di determinati prodotti. quando la quantità è pari a zero non va più. Ma solo se utilizzo il controllo php che mi hai suggerito.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ragazzi nessuno che ha idea del perchè succeda questa cosa?

  8. #8
    succede perchè non c'è più la select di nome "numerotavoli"...prova così:

    sostitusci

    codice:
    document.forms[0].numerotavoli.options[document.forms[0].numerotavoli.selectedIndex].text;
    con

    codice:
    try { var c = document.forms[0].numerotavoli.options[document.forms[0].numerotavoli.selectedIndex].text; }
    catch(e) { var c = 0;}

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ma questa riga

    try { var c = document.forms[0].numerotavoli.options[document.forms[0].numerotavoli.selectedIndex].text; }
    catch(e) { var c = 0;}


    devo riportarla anche per le altre

    var a = document.forms[0].numerointeri.options[document.forms[0].numerointeri.selectedIndex].text;
    var b = document.forms[0].numeroridotti.options[document.forms[0].numeroridotti.selectedIndex].text;

    (naturalmente con le opportune variazioni "numerointeri e numeroridotti")

    p.s. potresti spiegarmi, visto che mi piacerebbe imparare, il significato di "try" e "catch(e) { var c = 0;}" ???

  10. #10
    dipende: se nascondi anche gli altri select la devi riportare altrimenti puoi farne a meno...

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.