Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Come rendo obbligatori tutti i campi???

    Ciao a tutti, ho realizzato un pagina con un modulo di iscrizione fatto in Dreamweaver. Ora ho trovato molti tutorial su come mettere tutti i campi obbligatori, solo però che gli script che ho trovato io, sono script che vanno messi singolarmente ad ogni campo. Io invece volevo solo uno script veloce (se esiste) che mi fa solo il controllo di tutti i campi per vedere se sono stati compilati e poi permettere l'invio della mail. Sostanzialmente se un campo del mio modulo non è stato compilato deve uscire questo avviso "ATTENZIONE! E' necessario compilare tutti i campi del modulo".

    Capito di cosa ho bisogno? Script del genere onestamente non ne ho trovati. Qualcuno sa dirmi se esiste?

    grazie mille per il vostro aiuto.

    CIAUZ

    mickey

  2. #2
    Utente di HTML.it L'avatar di nuky
    Registrato dal
    Oct 2001
    Messaggi
    1,053
    Se devi controllare solo i testi (no checkbox, radio e select) puoi inserire una funzione così:
    codice:
    <html>
      <head>
        <script type="text/javascript">
          function ControllaTesti(oForm) {
            var cllcElem = oForm.elements; //collection degli elementi della form
    
            for (i = 0; i < cllcElem.length; i++) {
              if ((cllcElem[i].tagName.toLowerCase() == "input" && cllcElem[i].type.toLowerCase() == "text")
                 || cllcElem[i].tagName.toLowerCase() == "textarea") { //Si contrallano i tag input di tipo testo e le textarea
                    if (cllcElem[i].value.replace(/\s+$|^\s+/g,"") == "") { //Se il valore trimmato è vuoto si blocca il submit
                      cllcElem[i].focus();
                      alert("Campo " + cllcElem[i].name + " obbligatorio");
                      return false;
                    }
              }
            }
    
            //Viene ritornato true solo se sono stati valorizzati tutti i campi testuali
            return true;
          }
        </script>
      </head>
    
      <body>
        <form action="pagina.php" onsubmit="return ControllaTesti(this);">
          <input name="i1" type="text" />
          <input name="i2" type="text" />
          <input name="i3" type="text" />
          <input name="i4" type="checkbox" />
          <input name="i5" type="text" />
          <input name="i6" type="radio" />
          <input name="i6" type="radio" />
          <input name="i6" type="radio" />
          <input name="i7" type="text" />
          <input name="i8" type="text" />
          <input name="i9" type="button" />
          <textarea name="t1"></textarea>
          <textarea name="t2"></textarea>
          <select name="s1">
            <option>1</option>
            <option>2</option>
            <option>3</option>
          </select>
          <input type="submit" />
        </form>
      </body>
    </html>
    - "E' un messaggio. E' di Svarion, della terra di Merdor!"
    - "Busto Arsizio?"
    - "Terrazzo, sgabello, formaggio. Borraccia blu, ca**o di gomma e... CANNUCCIA!"
    - "Ca**o dici? C'è scritto «frocio chi legge»!"

  3. #3
    no nuky, purtroppo ho anche quelle cose li'. Checkbox, select, e altro. però mi hanno detto che non ci sono modi particolari per rendere obbligatori quei campi li. E' esatto?

    mickey

  4. #4
    Poi un'altra cosa, dello script che mi hai messo sopra. dove la metto la frase di avviso? Io avevo pensato ad un allert. Se po fa? Oppure va messo tutto in PAGINA.php che hai scritto nello script.
    E' possibile anche dirgli " se tutti i campi sono stati compilati vai alla pagina GRAZIE.htm"?

    mick

  5. #5
    Utente di HTML.it L'avatar di nuky
    Registrato dal
    Oct 2001
    Messaggi
    1,053
    Originariamente inviato da djcaipiroska
    no nuky, purtroppo ho anche quelle cose li'. Checkbox, select, e altro. però mi hanno detto che non ci sono modi particolari per rendere obbligatori quei campi li. E' esatto?

    mickey
    Come no, c'è il modo per fare tutto, solo che per le select è un po' più dura fare un qualcosa di generico.
    Si può controllare che sia stata selezionata un'option, oppure oltre a questo, si può voler verificare che l'option selezionata sia tra quelle valide (se se ne utilizza una o più solo per suddividere altre opzioni).
    Esempio:
    codice:
    <select>
      <option>Scegli</option>
      <option>--------</option>
      <option value="1">1</option>
      <option value="2">1</option>
      <option value="3">1</option>
      <option>--------</option>
    </select>
    Non è l'utilizzo ottimale dei tag option, però è sintatticamente possibile farlo, in questo caso andrebbe verificato che l'option scelta abbia una value, però il controllo può essere inserito direttamente sull'onchange della select.

    Per quanto riguarda i checkbox, anche qui dipende dalla struttura della pagina, che senso ha un checkbox obbligatorio... però potrebbe essere tale in base ad altre scelte fatte nella form.

    Per quanto riguarda i radio è semplice, va fatto un ciclo per vedere se almeno uno è selezionato.

    Ora ho da fare, ma se parti da quello che ho fatto io ci aggiungi abbastanza facilmente gli altri controlli.
    In ogni caso sul forum Javasctipt dovresti trovare roba già pronta (nelle discussioni utili).

    Ricorda che è sempre consigliato ripetere i controllo lato server, perché altrimenti ti sfuggirebbero i dati inseriti su client dove javascript non è attivo.
    Ovviamente il tutto dipende anche dal contesto in cui stai operando.

    - "E' un messaggio. E' di Svarion, della terra di Merdor!"
    - "Busto Arsizio?"
    - "Terrazzo, sgabello, formaggio. Borraccia blu, ca**o di gomma e... CANNUCCIA!"
    - "Ca**o dici? C'è scritto «frocio chi legge»!"

  6. #6
    Ho ancora qualche dubbio purtroppo. Guarda la cosa non è urgentissima. Appena riesci a liberarti scrivimi a djcaipiroska@hotmail.com. Così magari ti mando il modulo tanto per capire come l'ho strutturato.

    Ciao e grazie mille mille ancora.

    mickey

  7. #7
    Utente di HTML.it L'avatar di nuky
    Registrato dal
    Oct 2001
    Messaggi
    1,053
    Originariamente inviato da djcaipiroska
    Ho ancora qualche dubbio purtroppo. Guarda la cosa non è urgentissima. Appena riesci a liberarti scrivimi a djcaipiroska@hotmail.com. Così magari ti mando il modulo tanto per capire come l'ho strutturato.

    Ciao e grazie mille mille ancora.

    mickey
    Scrivilo qui, rischi solo che passi qualcun altro prima di me.
    - "E' un messaggio. E' di Svarion, della terra di Merdor!"
    - "Busto Arsizio?"
    - "Terrazzo, sgabello, formaggio. Borraccia blu, ca**o di gomma e... CANNUCCIA!"
    - "Ca**o dici? C'è scritto «frocio chi legge»!"

  8. #8
    Ok, dunque, volevo chiederti se mi spiegavi la verifica di cui hai parlato nelle ultime righe del topic precedente:

    "Ricorda che è sempre consigliato ripetere i controllo lato server, perché altrimenti ti sfuggirebbero i dati inseriti su client dove javascript non è attivo."
    ____cioè?

    L'altra cosa è diciamo che alla fin fine mi va bene anche solo il codice che hai messo nel primo topic? in effetti ci ho pensato e non mi serve tanto rendere obbligatori i check e i radio e ne tanto meno i select, anche perchè sono opzionali. Al cliente interessano soprattutto i testi. Quindi basta che metto solo quello di su????

    E poi, per l'avviso dove lo metto il testo? Si puo' mettere una popup di alert?

    E per concludere, come faccio a dirgli "se è tutto compilato vai alla pagina GRAZIE.htm"?

    è tutto.

    sei gentilissimo o issima...

    ciauz

  9. #9
    Utente di HTML.it L'avatar di nuky
    Registrato dal
    Oct 2001
    Messaggi
    1,053
    Originariamente inviato da djcaipiroska
    Ok, dunque, volevo chiederti se mi spiegavi la verifica di cui hai parlato nelle ultime righe del topic precedente:

    "Ricorda che è sempre consigliato ripetere i controllo lato server, perché altrimenti ti sfuggirebbero i dati inseriti su client dove javascript non è attivo."
    ____cioè?
    Il controllo dell'obbligatorietà dei campi viene effettuato lato client.
    Se l'utente che compila la form ha javascript disattivato, il controllo viene saltato, come se tutti i dati fossero ok.
    Per cui lato server devi ricontrollare che ti siano realmente arrivati tutti i valori.
    Se stai scrivendo un'applicazione che girerà su una intranet aziendale, dove l'attivazione di javascript è un presupposto fondamentale perché funzioni tutto, allora il controllo lato server non ti serve(r).


    Originariamente inviato da djcaipiroska
    L'altra cosa è diciamo che alla fin fine mi va bene anche solo il codice che hai messo nel primo topic? in effetti ci ho pensato e non mi serve tanto rendere obbligatori i check e i radio e ne tanto meno i select, anche perchè sono opzionali. Al cliente interessano soprattutto i testi. Quindi basta che metto solo quello di su????
    Troppo tardi, mi sono intrippato.


    Originariamente inviato da djcaipiroska
    E poi, per l'avviso dove lo metto il testo? Si puo' mettere una popup di alert?
    Nel codice che posterò puoi scegliere tra un alert e un elemento (span, div, label, hx, ...) della pagina. Comunque in quello che ho postato prima è in un alert.

    Originariamente inviato da djcaipiroska
    E per concludere, come faccio a dirgli "se è tutto compilato vai alla pagina GRAZIE.htm"?
    La pagina è scritta nella action della form, ti conviene lasciarla lì e non inserirla nello script, per il discorso di prima su javascript disattivato.

    Originariamente inviato da djcaipiroska
    sei gentilissimo o issima...
    issimo, credo, 'spe che controllo... si, si, issimo issimo.


    Questo è quello che ho combinato.
    Stavo pensando di parametrizzare l'obbligatorietà dei campi con l'aggiunta di un attributo nel markup, di gestire l'inserimento di campi solo numerici, solo alfanumerici, maschere per gli indirizzi email, le date... Mi sono imposto di smetterla perché so che sto scrivendo cose già scritte da altri.
    Qui mi fermo:
    codice:
    <html>
      <head>
        <style type="text/css">
          #errore {
            color: red;
            font-weight: bold;
            border: 2px solid red;
            visibility: hidden;
            padding: 2px 10px;
          }
        </style>
        
        <script type="text/javascript">
          //flag che indica la presenza del tag con id=errore
          // atto a contenere i messaggi di errore della routine di controllo
          //Se impostato a false o se il tag non è presente, i messaggi vengono visualizzati tramite alert.
          var flTagErrore = true;
    
    
          function resetMessaggio () {
            document.getElementById("errore").style.visibility = "hidden";
          }
          
          window.onload = function init () {
            //Funzione di inizializzazione degli elementi della form (solo se l'errore è da visualizzare nell'apposito tag)
            //Viene disattivato il messaggio di errore
            //  sull'onblur di tutti gli elementi 
            //  sugli eventi che determinano la variazione dei specifici campi
            //Si poteva anche impostare l'onkeypress e l'onclick di tutti
            // gli elementi, senza nessuno switch, ma me ne sono reso conto solo alla fine.
    
            //*******************************************
            //Form da controllare.
            //Se nel codice non è presente l'id (o non è uguale a quello scritto qui sotto)
            // nella form il controllo viene fatto comunque, ma non è possibile utilizzare il tag "errore" per i messaggi
            //*******************************************
            var oForm = document.getElementById("f1");
    
            //Si verifica la possibilità di utilizzare il tag di errore
            //Se abilitato, se presente il tag con id="errore", se presente la form si prosegue, altrimenti si usa l'alert
            if (!flTagErrore && !document.getElementById("errore") && !oForm) {
              flTagErrore = false;
              return false;
            }
            
            var cllcElem = oForm.elements; //collection degli elementi della form
            
            for (var i=0; i<cllcElem.length; i++) {
              cllcElem[i].onblur = resetMessaggio;
              switch (cllcElem[i].tagName.toLowerCase()) {
                case "select":
                  cllcElem[i].onkeypress = resetMessaggio;
                  break;
                
    
                case "input":
                  cllcElem[i].onblur = resetMessaggio;
                  switch (cllcElem[i].getAttribute("type").toLowerCase()) {
                    case "text":
                    case "password":
                      cllcElem[i].onkeypress = resetMessaggio;
                      break;
    
                    case "radio":
                      cllcElem[i].onclick = resetMessaggio;
                      break;
                  }
                  break;
    
                case "textarea":
                  cllcElem[i].onkeypress = resetMessaggio;
                  break;
              }
            }
          }
    
    
          function errore(oElem, pMessaggio) {
            //Viene dato il focus all'elemento passato e viene visualizzato il messaggio
            oElem.focus();
            if (flTagErrore) {
              document.getElementById("errore").innerHTML = pMessaggio;
              document.getElementById("errore").style.visibility = "visible";
            }
            else
              alert(pMessaggio);
            return false;
          }
    
          function controllaTesti(pForm) {
            var cllcElem = pForm.elements; //collection degli elementi della form
            var i, j;
            var flChecked;
            var radioOk = new Array;
    
            for (i=0; i<cllcElem.length; i++) {
              switch (cllcElem[i].tagName.toLowerCase()) {
                case "select":
                  if (cllcElem[i].value == "") {
                    if (cllcElem[i].getAttribute("multiple") == "multiple" || cllcElem[i].getAttribute("multiple") == "true")
                      return errore(cllcElem[i], "E' obbligatorio selezionare almeno un valore!");
                    else
                      return errore(cllcElem[i], "E' obbligatorio selezionare un valore!");
                  }
                  break;
                
    
                case "input":
                  switch (cllcElem[i].getAttribute("type").toLowerCase()) {
                    case "text":
                    case "password":
                      if (cllcElem[i].value.replace(/\s+$|^\s+/g,"") == "") //Se il valore trimmato è vuoto si blocca il submit
                        return errore(cllcElem[i], "Campo " + cllcElem[i].getAttribute("name") + " obbligatorio!");
                      break;
    
                    case "radio":
                      if (!isControllato(radioOk, cllcElem[i].getAttribute("name"))) {
                        //Se il radio non è già stato controllato si procede con la verifica
                        flChecked = false; //default
                        //Si controllano tutti i successivi elementi della form
                        //Se non è stato selezionato nemmeno un elemento del radio si avverte l'utente
                        for (j=i; j<cllcElem.length; j++) {
                          if ((cllcElem[j].tagName.toLowerCase() == "input") && (cllcElem[j].getAttribute("type").toLowerCase() == "radio")) {
                            if (cllcElem[j].getAttribute("name") == cllcElem[i].getAttribute("name")) {
                              if (cllcElem[j].checked) {
                                flChecked = true;
                                break;
                              }
                            }
                          }
                        }
                        if (!flChecked)
                          return errore(cllcElem[i], "Effettuare una selezione!");
                        else
                          radioOk.push(cllcElem[i].getAttribute("name")); //Si scrive il nome in un array per non ricontrollarlo sui successivi elementi
                      }
                      break;
    
                    case "checkbox":
                      break;
                  }
                  break;
    
                case "textarea":
                  if (cllcElem[i].value.replace(/\s+$|^\s+/g,"") == "") //Se il valore trimmato è vuoto si blocca il submit
                    return errore(cllcElem[i], "Campo " + cllcElem[i].getAttribute("name") + " obbligatorio!");
                  break;
              }
    
            }
    
            //Viene ritornato true solo se tutti i campi sono stati valorizzati
            return true;
          }
          
          function isControllato (oArray, pNome) {
            //Funzione che controlla se il nome è già presente nell'array dei radio controllati
            for (i=0; i<oArray.length; i++) {
              if (oArray[i] == pNome)
                return true;
            }
            return false;
          }
          
        </script>
      </head>
    
      <body>
        <form id="f1" action="pagina.php" onsubmit="return controllaTesti(this);">
          <input name="i1" type="text" />
          <input name="i2" type="text" />
          <input name="i3" type="text" />
          <input name="i4" type="checkbox" />
          <input name="i5" type="text" />
          <input name="i6" type="radio" value="1" />
          <input name="i6" type="radio" value="2" />
          <input name="i7" type="text" />
          <input name="i6" type="radio" value="3" />
          <input name="i8" type="text" />
          <input name="i9" type="password" />
          <input name="i10" type="hidden" />
          <input name="i11" type="button" />
    
          <textarea name="t1"></textarea>
          <textarea name="t2"></textarea>
    
          <select name="s1">
            <option></option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
          </select>
          <select name="s2" multiple="multiple">
            <option></option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
          </select>
    
          <input type="submit" />
        </form>
        <span id="errore"></span>
      </body>
    </html>
    - "E' un messaggio. E' di Svarion, della terra di Merdor!"
    - "Busto Arsizio?"
    - "Terrazzo, sgabello, formaggio. Borraccia blu, ca**o di gomma e... CANNUCCIA!"
    - "Ca**o dici? C'è scritto «frocio chi legge»!"

  10. #10
    wow...mazza...ehehehhe... ascolta solo una cosina. quindi io dove hai messo pagina.php posso anche mettere grazie.htm cioè la pagina di conferma di avvenuta compilazione del form giusto?

    Serve che modifico qualcosa nel javascript ho posso prendere il tutto così com'e'?

    mickey

    ps: spero di non disturbarti ancora.
    pps: ho dimenticato di dirti che c'e' anche un campo SFOGLIA per allegare un immagine. E' qualcosa di complicato o c'e' qualche script anche per quello?

    grazie grazie
    di dove sei?

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.