Visualizzazione dei risultati da 1 a 6 su 6

Discussione: controllo form

  1. #1

    controllo form

    Ciao a tutti.
    Avrei bisgono 1 aiuto,sto cercando di fare uno script che mi controlla 2 campi form, e se uno è maggiore dell'altro restituisce un alert ma non ci riesco...
    codice:
    if (f.n.value>f.dispo.value)
      alert("Ha inserito un numero superiore.");
    		f.n.focus();
    		return false;
    	
    }
    dove sbaglio?
    [The goal is soul]

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In quelle condizioni (confronto alfabetico) 10 e` minore di 9.

    Devi confrontare i numeri:
    if (parseInt(f.n.value,10) > parseInt(f.dispo.value,10))

    Se i numeri hanno parte decimale, usa invece:if (parseFloat(f.n.value) > parseFloat(f.dispo.value))
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    ciao ho inserito questo codice ma non funziona proprio
    codice:
      if (parseInt(f.n.value,10) > parseInt(f.dispo.value,10)) 
    		alert("Ha inserito un numero superiore di bliglietti alle nostre disponibilità.");
    		f.n.focus();
    		return false;
    ma il numero 10 devo lasciarlo nello script? Non capisco a cosa serva (scusa la mia ignoranza)..
    Poi il cammpo n è un form select contentente valori testuali ma nella value un valore numerico. Menre il campo dispo è un input fortmato hidden.
    Ecco il campo n
    codice:
    <select size="4" name="n"> 
    <option value="1">1....7€</option> 
    <option value="2">2....14€</option> 
    <option value="3">3....21€</option> 
    <option value="4">4....28€</option> 
    </select>
    Grazie 1000 dell'aiuto
    [The goal is soul]

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Puntualizziamo.

    1. Anche in una select i vari value sono campi alfabetici. Il fatto che contengono numeri e` un tuo caso particolare: per questo devi convertirli in valori numerici se vuoi fare il confronto.

    2. Il 10 e` la base del numero che converti: altrimenti se la stringa inizia per 0 il numero viene convertito come se fosse in base 8.

    3. Quella sintassi e` sbagliata per leggere i values di una select. Io avevo assunto che quel codice fosse coretto, dato che non conoscevo il tuo problema.
    Allora devi fare:
    if (parseInt(f.n.options[f.n.selectedIndex].value,10) > parseInt(f.dispo.value,10))
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Bho! All'inizio funzionava...adesso non più!
    Non capisco l'errore, sembra tutto a posto!!!Mi controlla la correttezza di tutti i campi inseriti ma non funziona il controllo del campo se n > dispo Alert "Troppi biblietti prenotati"...

    Codice del js esterno
    codice:
    <!--
    function controlla() {
    	var f = document.mioForm;
    	
    	if (f.Nome.value == "") {
    		alert("Inserisca il suo Nome");
    		f.Nome.focus();
                    return false;
    	}
    	if (f.Cognome.value == "") {
    		alert("Inserisca il suo Cognome");
    		f.Cognome.focus();
                    return false;
    	}
    	if ((f.Nome.value.indexOf("@") != -1)||(f.Nome.value.indexOf("'") != -1)||(f.Nome.value.indexOf("\"") != -1)) {
    		alert("Per il Nome si possono utilizzare solo lettere o numeri.")
    		f.Nome.focus();
    		return false;
    	}	
               if (f.Email.value ==""){
               alert("Inserisca l\'\indirizzo di E-Mail")
               f.Email.focus();
               return false;
                  }
               if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(f.Email.value)){
               return true;
           }
               alert("Indirizzo di E-mail non valido")
               f.Email.focus();
               f.Email.select();
               return false;
    
      	if (f.n.value =="") {
    		alert("Inserisca il Numero dei biglietti che desidera prenotare.")
    		f.n.focus();
    		return false;
    	
    	}
      	if (parseInt(f.n.options[f.n.selectedIndex].value,10) > parseInt(f.dispo.value,10)) {
    		alert("Troppi biglietti inseriti");
    		f.n.focus();
    		return false;
    	}
    }
    // -->
    Codice del form
    codice:
    <form action="prenotazione+ricevuta.asp" method="post" name="mioForm" onSubmit="return controlla()"> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3" colspan="2"> <p align="right"><font size="2" color="#CC0000">Inserire tutti i dati richiesti </font></td> 
              </tr> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"> Nome</td> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"><font face="Arial"> 
                  <input name="Nome" size="30" style="font-weight: 700"> 
                  </font></td> 
              </tr> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"> Cognome</td> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"><font face="Arial"> 
                  <input name="Cognome" size="30" style="font-weight: 700"> 
                  </font></td> 
              </tr> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"> E-mail</td> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"><font face="Arial"> 
                  <input name="Email" size="30" style="font-weight: 700"> 
                  </font></td> 
              </tr> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"> Numero biglietti</td> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3"><font face="Arial">N° biglietti...............................Prezzo 
                  <select size="4" name="n"> 
                  <option value="1">1............................................<%=prezzo*1%>€</option> 
                  <option value="2">2............................................<%=prezzo*2%>€</option> 
                  <option value="3">3............................................<%=prezzo*3%>€</option> 
                  <option value="4">4............................................<%=prezzo*4%>€</option> 
                  <option value="5">5............................................<%=prezzo*5%>€</option> 
                  <option value="6">6............................................<%=prezzo*6%>€</option> 
                  <option value="7">7............................................<%=prezzo*7%>€</option> 
                  <option value="8">8............................................<%=prezzo*8%>€</option> 
                  <option value="9">9............................................<%=prezzo*9%>€</option> 
                </select> 
                  <input type="hidden" name="ip" value="<%=Request.ServerVariables("REMOTE_ADDR")%> "> 
                  <input type="hidden" name="data" value="<%=NOW%> "> 
                  <input type="hidden" name="dispo" value="<%=disponibilita%>"> 
                  </font></td> 
              </tr> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3" colspan="2"> <font color="#CC0000" size="2">Prima di cliccare sul bottone &quot;Prenota i biglietti&quot; accertarsi di avere immesso i dati corretti. Una volta cliccato il bottone qui sotto non sarà più possibile annullare l'operazione.</font> 
            <tr> 
                <td class="infotext" height="19" align="left" bgcolor="#F3F3F3" colspan="2"> <p align="center">
                    <input type="submit" value="Prenota i biglietti" style="font-weight: bold; font-size:14pt; font-family:Arial; color:#333333"> 
            </form>
    [The goal is soul]

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Troppa formattazione nel codice HTML per i miei gusti. Usi anche tag deprecati.

    Comuqnue qui c'e` un errore JS:
    if (f.n.value =="") {

    n e` una select, non un campo text o hidden: devi sostituire con:
    if (f.n.options[f.n.selectedIndex].value =="") {

    Comunque non ha molto senso con il tuo codice HTML: manca l'opzione default con value="0"
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.