Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: Creazione ciclo jquery

  1. #1

    Creazione ciclo jquery

    Ciao a tutti.
    Sto preparando un test da fare online, basato sulla corretta selezione di voci da un menu select. Ho deciso di fare in questo modo:
    1. Con PHP genero la struttura del file html, che stabilisce, oltre ai div e ai select, anche le loro id sulla base di un file csv;
    2. Con jquery gestisco la logica condizionale che fa comparire i menu di opzioni dei campi select a seconda delle scelte dell'utente, e che imposto tramite l'evento onchange.

    La struttura html, ridotta all'osso, è la seguente, cone le id generate in php che scendono "a cascata":

    codice:
    <div class="container" id="container-1">
    <div class="riga" id="riga-1-1">
      <select id="1-1-1"></select><select id="1-1-2"></select><select id="1-1-3"></select>
    </div><br>
    <div class="riga" id="riga-1-2">
      <select id="1-2-1"></select><select id="1-2-2"></select><select id="1-2-3"></select>
    </div><br>
    <div class="riga" id="riga-1-3">
      <select id="1-3-1"></select><select id="1-3-2"></select><select id="1-3-3"></select>
    </div> 
    </div>
    
    <div class="container" id="container-2">
    <div class="riga" id="riga-2-1">
      <select id="2-1-1"></select><select id="2-1-2"></select><select id="2-1-3"></select>
    </div><br>
    <div class="riga" id="riga-2-2">
      <select id="2-2-1"></select><select id="2-2-2"></select><select id="2-2-3"></select>
    </div><br>
    <div class="riga" id="riga-1-3">
      <select id="2-3-1"></select><select id="2-3-2"></select><select id="2-3-3"></select>
    </div> 
    </div>
    Ovviamente vi possono essere più container e, all'interno di ciascuno, più righe, mentre il numero di select per ogni riga è di 10.


    Per ora sono riuscito a costruire tramite jquery un ciclo che mi permette di fare quello che voglio soltanto per ciascun container, mentre vorrei trovare un sistema che mi permetta di eseguire la stessa serie di comandi con onchange per ciascuna riga dei container.
    Qualcuno sa se è possibile farlo e in che modo?
    Grazie mille.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    TL;DR
    ciao, 2 cose: il nome di attributi id come le classi, non possono iniziare con un valore numerico; avevo creato un sistema più o meno simile tempo fa... vedi se questa discussione può darti qualche spunto: http://forum.html.it/forum/showthrea...readid=2945174
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    TL;DR
    ciao, 2 cose: il nome di attributi id come le classi, non possono iniziare con un valore numerico; avevo creato un sistema più o meno simile tempo fa... vedi se questa discussione può darti qualche spunto: http://forum.html.it/forum/showthrea...readid=2945174
    Credevo anch'io, invece i select possono aver id che iniziano con valori numerici: ti confermo che funzionano... strano, ma è così.
    Adesso do un'occhiata al thread. Grazie mille.

  4. #4
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    TL;DR
    ciao, 2 cose: il nome di attributi id come le classi, non possono iniziare con un valore numerico; avevo creato un sistema più o meno simile tempo fa... vedi se questa discussione può darti qualche spunto: http://forum.html.it/forum/showthrea...readid=2945174
    Too long... Don't read!
    Ho imparato una cosa nuova!

    Scherzi a parte, non ho esattamente il problema descritto dall'altro utente, nel senso che nel mio caso sono riuscito a scrivere uno script perfettamente funzionante per le select, ma limitatamente ad un solo container.
    A sto punto scriverò a mano altri 9 cicli per altri 9 container che devo inserire: sarà pallosissimo...

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Secondo me inserendo una classe specifica per le select e alla onchange recuperi i container dovrebbe funzionare questo senza aver visto una riga di codice js
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Secondo me inserendo una classe specifica per le select e alla onchange recuperi i container dovrebbe funzionare questo senza aver visto una riga di codice js
    Provo a interpretare sulla base delle mie esigenze: secondo te è possibile nell'onchange recuperare la id della riga che fa da container, acquisirla come stringa di testo e aggiungerla alla id del select, in modo tale da vincolare l'esecuzione dell'onchange a ciascun id dei select? Non so se mi sono spiegato...

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    Too long... Don't read!
    Sì, scusami, avevo letto al volo perché ero di fretta e pensavo si trattasse di un "semplice" sistema di select a cascata. Ora ho letto meglio ma ci credi che non ho capito quale sia il problema. A dire il vero non ho capito bene nemmeno la logica di funzionamento.
    Puoi chiarire con un esempio? Puoi postare lo script jQuery che stai usando?

    secondo te è possibile nell'onchange recuperare la id della riga che fa da container, acquisirla come stringa di testo e aggiungerla alla id del select, in modo tale da vincolare l'esecuzione dell'onchange a ciascun id dei select?
    Sicuramente è possibile risalire in qualche modo al container o quello che è, come già ti ha indicato grossomodo cavicchiandrea, ma sarebbe appunto utile vedere cosa hai già creato.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Sì, scusami, avevo letto al volo perché ero di fretta e pensavo si trattasse di un "semplice" sistema di select a cascata. Ora ho letto meglio ma ci credi che non ho capito quale sia il problema. A dire il vero non ho capito bene nemmeno la logica di funzionamento.
    Puoi chiarire con un esempio? Puoi postare lo script jQuery che stai usando?


    Sicuramente è possibile risalire in qualche modo al container o quello che è, come già ti ha indicato grossomodo cavicchiandrea, ma sarebbe appunto utile vedere cosa hai già creato.

    D'accordo, ecco il link: http://www.scuolamediadigitale.it/pr...-grammaticale/

    Dal file sorgente si può accedere al file javascript, in cui ho scritto il ciclo che permette l'onchange corretto al clic sul primo select di ogni riga della prima frase. Lo script è molto lungo, quindi non credo sia il caso che lo posto qua.
    Cliccando sulla prima frase, compariranno delle righe infatti, ciascuna delle quali è popolata di select che si aprono secondo la logica condizionale che desidero (per ora lascia perdere la correttezza dell'analisi grammaticale, che non penso ti interessi!).
    Vorrei fare in modo di non dover scrivere altre nove volte lo stesso ciclo per le righe di ciascun'altra frase che ho intenzione di inserire nella pagina. Non so se mi sono spiegato.

    Ovviamente ci sarà sicuramente un sistema molto più economico ed elegante per fare quello che ho fatto io con decine di righe di codice: mi basterebbe soltanto capire come poter far fare a tutte le frasi la stessa cosa che faccio con la prima. Tutto qua.

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,675
    Ovviamente ci sarà sicuramente un sistema molto più economico ed elegante per fare quello che ho fatto io con decine di righe di codice: mi basterebbe soltanto capire come poter far fare a tutte le frasi la stessa cosa che faccio con la prima. Tutto qua.
    Ho dato una lettura veloce allo script e noto infatti che in generale stai usando parecchio codice ridondante. Direi che quello che manca è il concetto di riusabilità del codice, che appunto è anche il nocciolo di questa tua richiesta.

    In linea di massima è valido quanto già ti è stato suggerito da cavicchiandrea ma ovviamente per darti una soluzione appropriata bisognerebbe approfondire ciò che hai già fatto, cosa che al momento mi viene difficile. Nel caso potrò dargli uno sguardo questi giorni, nel mentre attendi magari altre eventuali risposte.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ho dato una lettura veloce allo script e noto infatti che in generale stai usando parecchio codice ridondante. Direi che quello che manca è il concetto di riusabilità del codice, che appunto è anche il nocciolo di questa tua richiesta.

    In linea di massima è valido quanto già ti è stato suggerito da cavicchiandrea ma ovviamente per darti una soluzione appropriata bisognerebbe approfondire ciò che hai già fatto, cosa che al momento mi viene difficile. Nel caso potrò dargli uno sguardo questi giorni, nel mentre attendi magari altre eventuali risposte.
    In sostanza dovrei fare in modo che questo codice, che funziona per tutte le righe della prima frase, funzionasse anche per le righe di tutte le altre frasi. Il ciclo mi garantisce il funzionamento soltanto per la prima riga, mentre io avrei bisogno di inserire una variabile numerica progressiva anche nella prima cifra che compare nell'id "#riga-1" + i.


    codice:
    $(document).ready(function(){
    
    $(".riga").each(function(i)
    {
    $("#riga-1-" + i + " select:nth-of-type(1)").change(function()
    	{
    	if ($(this)[0].selectedIndex == 1)
    		{
    		$("#1-" + i + "-2").show(500).html($tutto);
    		$(".riga select:nth-of-type(2) option:not(.primaopzione, .articolo)").css("display","none");
    		$("#1-" + i + "-3").show(500).html($tutto);
    		$(".riga select:nth-of-type(3) option:not(.primaopzione, .mf)").css("display","none");
    		}
    
    });
    });
    });
    Comunque non c'è veramente nessuna fretta, ci penserò ancora sulla base delle indicazioni datemi, che dovrebbero mettermi sulla strada giusta.
    Grazie a tutti.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.