Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33

    (HELP)Variabili con nome dinamico

    Salve a tutti.
    Ho una pagina HTML in cui, mediante DOM, creo delle variabili con nomi dinamici (Es. "Software1","Software2",etc..) in quantità variabile (quantità mantenuta in un campo "countSW").
    Quel che vorrei fare è creare lato client un controllo per evitare che quei campi siano vuoti.
    L'idea è questa...
    Codice PHP:
    for(i=0;i<countSW;i++){
      if (
    form.Softwarei.value == ""){ 
        
    alert("Inserisci il valore!"); 
        
    form.Softwarei.focus(); 
        return (
    false);
      } 
    ...qualcuno sa dirmi come far si che a "Software" si aggiunga il valore della variabile "i" per ottenere la variabile "Softwarei"?
    Grazie mille a tutti coloro che mi sapranno aiutare...
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  2. #2
    Caspita! Sembra essere la domanda del giorno. Credo ci siano almero 3 thread ai quali ho risposto la stessa cosa oggi!!!!

    Comunque io preferisco usare l'id e non il nome di un campo.

    quindi il mio metodo preferito e'

    codice:
    document.getElementById("Software" + i).value == ...
    ma (e questo l'ho appena scoperto) si puo' fare cosi' se l'elemento e' in una form

    codice:
    form["Software" + i)].value == ...
    oppure (ma io eviterei, lo metto solo a scopo didattico)
    codice:
    eval("form.Software" + i + ".value == '';")

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Nonostante gli esempi,non riesco a farlo funzionare...

    Dando un'occhiata a questo scorcio di codice
    for(i=0;i<form.countSW;i++){
    if (form["software" + i)].value == ""){
    alert("Inserisci il valore!");
    form.("software"+i).focus();
    return (false);
    }
    }
    riuscite a dirmi dov'è l'errore?
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    intanto se form non e' una tua variabile (la scelta del cui nome sarebbe poco felice, dal momento che e' parola riservata) devi sempre farla precedere da document.

    poi, svista di mega69, non mi risulta esistere la collezione form ma forms
    Sembra essere la domanda del giorno. Credo ci siano almero 3 thread ai quali ho risposto la stessa cosa oggi!!!!
    a cui hai risposto a tutti e 3 confidando in "form" invece che "forms"?!

    qui c'e' ovviamente una parentesi tonda di troppo
    form["Software" + i)].value == ...

    poi, il problema originario non mi sembra vertere sulla dinamicita' del nome del form,
    ma di singoli elementi del form
    in tal caso si puo' usare elements

    document.nomeForm.elements["software"+i].focus() etc.. etc..

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Posto un po' di codice, così vedo se riesco a spiegare meglio la situazione...

    1)La mia form è questa
    codice:
    <form name="azienda" action="inserimento.php" method="post" onSubmit='return checa_formulario(this)'>
    
    ...
    
        <input name="aggiorna" type="submit" value="Aggiorna i Dati" align=top>
      
        <input name="Cancella" type="reset" value="Cancella" align=absbottom>
    
    </form>
    2)La funzione che richiama onSubmit è la seguente che fa un controllo sui vari campi del form...
    codice:
    <script Language="JavaScript"> 
    
    function checa_formulario(form){ 
    
    ...
    
    return (true); 
    } 
    </script>
    3)...un esempio di controllo (funzionante) sui dati del form è il seguente
    codice:
      if (form.cellulare.value == ""){ 
      alert("Inserisci il numero di cellulare!"); 
      form.cellulare.focus(); 
      return (false); 
      }
    (che va al posto dei "..." del punto n. 2)

    4)...e questo è quello a cui sto lavorando senza successo...
    codice:
      for(i=0;i<form.countSW.value;i++){
        if ("form.software" + i + ".value == ''"){
          alert("Inserisci il valore di software" + i);
          form.elements["software"+i].focus()("form.software" + 0 + ".focus()";)
          return (false);
        }
      }
    ...spero di avervi dato qualche indizio in più per aiutarmi a capire cosa sbaglio...
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    codice:
      for(i=0,l=parseInt(form.countSW.value);i!=l;i++){
        if (form.elements["software" + i ].value == ''"){
          alert("Inserisci il valore di software" + i);
          form.elements["software"+i].focus()
          return false;
        }
      }
    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33
    Originariamente inviato da Xinod
    codice:
      for(i=0,l=parseInt(form.countSW.value);i!=l;i++){
        if (form.elements["software" + i ].value == ''"){
          alert("Inserisci il valore di software" + i);
          form.elements["software"+i].focus()
          return false;
        }
      }
    ciao
    ...senza parole...funziona tutto...ho i lacrimoni agli occhi...grazie milleeee!!!
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: (HELP)Variabili con nome dinamico

    Originariamente inviato da ziopanzu
    Ho una pagina HTML in cui, mediante DOM, creo delle variabili con nomi dinamici (Es. "Software1","Software2",etc..) in quantità variabile (quantità mantenuta in un campo "countSW").
    attenzione,
    cercare di accedere attraverso il nome a campi creati via createElement genera sicuramente un errore con IE6
    (probabilmente anche col 7)

    allora x es. al posto del canonico
    var tuoInput=document.createElement('input');
    tuoInput.name='tuoNome';

    si puo' fare
    codice:
    var nome='tuoNome';
    /*@cc_on @if (@_jscript)
    var tuoInput=document.createElement("<input name='"+nome+"'>");
    @else */
    var tuoInput=document.createElement("input");
    tuoInput.name=nome;
    /* @end @*/
    oppure
    seguire altre tecniche illustrate qui
    http://www.thunderguy.com/semicolon/...rnet-explorer/

    ciao

  9. #9
    Originariamente inviato da Xinod
    intanto se form non e' una tua variabile (la scelta del cui nome sarebbe poco felice, dal momento che e' parola riservata) devi sempre farla precedere da document.

    poi, svista di mega69, non mi risulta esistere la collezione form ma forms

    a cui hai risposto a tutti e 3 confidando in "form" invece che "forms"?!

    qui c'e' ovviamente una parentesi tonda di troppo
    form["Software" + i)].value == ...

    poi, il problema originario non mi sembra vertere sulla dinamicita' del nome del form,
    ma di singoli elementi del form
    in tal caso si puo' usare elements

    document.nomeForm.elements["software"+i].focus() etc.. etc..

    ciao
    Si' Xinod, hai ragione, sono riuscito a fare tre errori in una sola frase. Colpa della fretta

    Chiedo umilmente perdono

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    33

    Re: Re: (HELP)Variabili con nome dinamico

    Originariamente inviato da Xinod
    attenzione,
    cercare di accedere attraverso il nome a campi creati via createElement genera sicuramente un errore con IE6
    (probabilmente anche col 7)

    allora x es. al posto del canonico
    var tuoInput=document.createElement('input');
    tuoInput.name='tuoNome';

    si puo' fare
    codice:
    var nome='tuoNome';
    /*@cc_on @if (@_jscript)
    var tuoInput=document.createElement("<input name='"+nome+"'>");
    @else */
    var tuoInput=document.createElement("input");
    tuoInput.name=nome;
    /* @end @*/
    oppure
    seguire altre tecniche illustrate qui
    http://www.thunderguy.com/semicolon/...rnet-explorer/

    ciao
    ...mi trovo un tantinello in difficoltà,infatti...l'inserimento nel database,lo fa...però,se tento di utilizzare il controllo che mi hai suggerito,IE lo ignora ed invia tutti i dati come se non ci fosse nessun controllo.
    Non ho capito un granchè del codice che hai passato...perchè ci sono quelle parti "commentate"?
    codice:
    var nSW=0;
    function accodaSW(){
    	if(document.createElement && document.getElementById && document.getElementsByTagName) {
    		// crea elementi
    		var oTr=document.createElement("TR");
    		var oTd1=document.createElement("TD");
    		var oTd2=document.createElement("TD");
    		var oField=document.createElement("INPUT");
    		var oField2=document.createElement("INPUT");
    
    		// setta attributi
      		oField.setAttribute("type","text");
    		oField.setAttribute("name","software"+nSW);
      		oField.setAttribute("value","");
    		oField.setAttribute("size","36");
    		oField.setAttribute("maxlength","100");
    		
    		oField2.setAttribute("type","text");
    		oField2.setAttribute("name","funzione"+nSW);
    		oField2.setAttribute("value","");
    		oField2.setAttribute("size","38");
    		oField2.setAttribute("maxlength","100");
    
    
    		// appendi al relativo padre
    		oTd1.appendChild(oField);
    		oTd2.appendChild(oField2);
    		oTr.appendChild(oTd1);
    		oTr.appendChild(oTd2);
    		document.getElementById('SW').getElementsByTagName('TBODY')[0].appendChild(oTr);
    
    		// incrementa variabile globale
    		nSW++;
    		document.azienda.countSW.value=nSW;
    	}
    }
    Questo è il mio codice per creare le voci "software" e "funzione":cosa c'è che non va?
    ...esistono 10 tipi di informatici: quelli che conoscono il binario e quelli che non lo conoscono...

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.