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

    Controllo su campo di testo tipo nome[]

    Ho un modulo per prenotare che in php con il ciclo for creo in base a quante persone ci saranno.

    Utilizzo questo codice per fare il controllo se il campo e' pieno o vuoto:

    codice:
    var f = document.credito; 
    if(f.numero_carta.value == ""){ 
    alert("Il campo \"carta\" non \e' stato compilato") 
    f.numero_carta.focus(); 
    return false; 
    } 
    if(f.scadenza_mese.value == ""){ 
    alert("Il campo \"mese di scadenza\" non \e' stato compilato") 
    f.scadenza_mese.focus(); 
    return false; 
    }
    if(f.scadenza_anno.value == ""){ 
    alert("Il campo \"anno di scadenza\" non \e' stato compilato") 
    f.scadenza_anno.focus(); 
    return false; 
    }
    if(f.nome_titolare.value == ""){ 
    alert("Il campo \"nome del titolare\" non \e' stato compilato") 
    f.nome_titolare.focus(); 
    return false; 
    }
    if(f.cognome_titolare.value == ""){ 
    alert("Il campo \"cognome del titolare\" non \e' stato compilato") 
    f.cognome_titolare.focus(); 
    return false; 
    }
    return true; 
    }
    Questo funziona benissimamente per i campi che indico, mentre piu' su io ho i campi:
    nome[]
    cognome[]
    data_nascita[]
    codice_fiscale[]
    che sono degli array in php e quindi non riesco a fare il controllo.

    Io ho provato ad aggungere sia

    if(f.nome.value == ""){
    alert("Il campo \"nome\" non \e' stato compilato")
    f.nome.focus();
    return false;
    }


    che


    if(f.nome[].value == ""){
    alert("Il campo \"nome\" non \e' stato compilato")
    f.nome[].focus();
    return false;
    }

    ma lo stesso non riesco a far uscire l'alert. Sapete aiutarmi?
    Mai dire Mai

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    f.elements['nome[]'].value
    questo se nel form vi e' un solo elemento con name="nome[]"

    altrimenti, come nel caso di elementi con nome piu' convenzionale, se piu' elementi hanno stesso name rientrano in un array, quindi
    f.elements['nome[]'][n].value

    dove n e' l' indice del campo nella collezione di campi con quel nome,
    x es. il valore del secondo campo con name="nome[]"
    f.elements['nome[]'][1].value

    ciao

  3. #3
    mmm e quindi nel mio caso come dovrei aggiungere se li ho tutti simili e quindi:

    if(f.numero_carta.value == ""){
    alert("Il campo \"carta\" non \e' stato compilato")
    f.numero_carta.focus();
    return false;
    }


    a quanto pare e' il secondo che hai detto

    quindi dovrei creare il controllo usando

    f.elements['nome[]'][n].value

    ma come lo metto?
    Mai dire Mai

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    i campi con name="nome[]", per es., sono sicuramente piu' d' uno o puo' anche essere uno solo?

  5. #5
    io scelgo nella pagina precedente quanti passeggeri ci sono, se metto 3 mi creo 3 form con il campo nome[], cognome[] ecc.

    Ma il nome del campo di testo e' sempre nome con parentesi quadre aperte e chiuse
    Mai dire Mai

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    codice:
    function tuaFunzione(){
      var f = document.credito;
      var l=f.elements['nome[]'].length;
      if(l){
        for(var k=0;k<l;k++){
          if(f.elements['nome[]'][k].value == ""){ 
            alert("Il campo \"nome\" non \e' stato compilato");
            f.elements['nome[]'][k].focus(); 
            return false; 
          }
          else if(f.elements['cognome[]'][k].value == ""){ 
            alert("Il campo \"cognome\" non \e' stato compilato");
            f.elements['cognome[]'][k].focus(); 
            return false; 
          }
          // .. e avanti cosi' ...
        } // fine ciclo for
      } // fine if, ramo per piu' di una persona
      else {
        if(f.elements['nome[]'].value == ""){ 
          alert("Il campo \"nome\" non \e' stato compilato")
          f.elements['nome[]'].focus(); 
          return false; 
        }
        else if(f.elements['cognome[]'].value == ""){ 
          alert("Il campo \"cognome\" non \e' stato compilato")
          f.elements['cognome[]'].focus(); 
          return false; 
        }
        // .. e avanti cosi' ...
      } // fine else, ramo valutato solo se c'e' una sola persona
      // ...resto dei controlli che hai gia' e che non sono dipendenti dal numero di persone
      // altrimenti tutto e' verificato e ritorna true
      return true;
    } // chiusura funzione

  7. #7
    ma non ho capito, devo mettere per 10 volte (le persone totali sono 10) il campo nome, cognome ecc?
    Mai dire Mai

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    no, tu metti un controllo per il tipo di campo, nell' esempio il nome e il cognome, il ciclo pensa a far passare tutte le persone per questo controllo...
    se hai solo nome e cognome basta quello che ho scritto per tutte e 10 le persone

  9. #9
    mmm
    ecco come ho risolto
    grazie per l'aiuto


    cmq se serve a qualcuno:

    codice:
    var name=f.elements['nome[]'];
    for (i=0; i<name.length; i++) { 
        if (name[i].value== '') 
        { 
          alert ( "Devi inserire il nome del passeggero " + (i+1));
          name[i].focus();
          name[i].style.backgroundColor="#ffff00"; 
          return false;
        } else {
          name[i].style.backgroundColor="white";
        } 
      } 
    var name=f.elements['cognome[]'];
    for (i=0; i<name.length; i++) { 
        if (name[i].value== '') 
        { 
          alert ( "Devi inserire il cognome del passeggero " + (i+1));
          name[i].focus();
          name[i].style.backgroundColor="#ffff00"; 
          return false;
        } else {
          name[i].style.backgroundColor="white";
        } 
      }
    var name=f.elements['codice_fiscale[]'];
    for (i=0; i<name.length; i++) { 
        if (name[i].value== '') 
        { 
          alert ( "Devi inserire il codice fiscale del passeggero " + (i+1));
          name[i].focus();
          name[i].style.backgroundColor="#ffff00"; 
          return false;
        } else {
          name[i].style.backgroundColor="white";
        } 
      }
    var name=f.elements['data_nascita[]'];
    for (i=0; i<name.length; i++) { 
        if (name[i].value== '') 
        { 
          alert ( "Devi inserire la data di nascita del passeggero " + (i+1));
          name[i].focus();
          name[i].style.backgroundColor="#ffff00"; 
          return false;
        } else {
          name[i].style.backgroundColor="white";
        } 
      }
    Mai dire Mai

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.