• Home
  • Forum
  • Fare Web
  • Javascript

Select in cascata

  • Creatore Discussione Creatore Discussione PiccolaAnimaBlu
  • Data di inizio Data di inizio 11 Giu 2010
P

PiccolaAnimaBlu

Nuovo Utente
11 Giu 2010
10
0
0
  • 11 Giu 2010
  • #1
Sto realizzando un sito web che permette di uplodare degli 'oggetti' e di catalogarli.
Le categorie sono organizzate in 5 categorie principali ed ognuna di questa ha delle sottocategorie e così via.
Voglio realizzare nell'html delle select in successione a seconda delle scelte fatte dall'utente.
Ho utilizzato javascript e una servlet java per ottenere questo effetto, ma mi sono resa conto che non è proprio quello che desideravo. Ho notato che su Firefox l'evento si scatena solo al secondo click, mentre su IE funziona correttamente, ma solo sulla prima select.

Posto di seguito parte del codice realizzato.


Questa è la servlet java che scrive il codice html per la select (da visualizzare dinamicamente)
Codice:
            //prendere il valore della select, che sappiamo essere l'id di una categoria
            int id = Integer.parseInt(request.getParameter("idcategoria"));
            //controllo se esiste già dbcategorie se no lo creo
            DatabaseCategorie DBcategorie = (DatabaseCategorie) getServletContext().getAttribute("DBcategorie");
            if(DBcategorie==null){
                DBcategorie = new DatabaseCategorie();
                getServletContext().setAttribute("DBcategorie", DBcategorie);
             }
           //l'id che arriva alla servlet deve essere != 0. Se è = 0, significa che ho il valore select category e tutto questo ambaradam non lo faccio
           if(id!=0){
           if(DBcategorie.getCategorieFiglie(id).size()>0){
           int numero = DBcategorie.getCategorieFiglie(id).get(0).getIdcategoria();
            //stampo il codice html(la mia select)
            out.print("<p>");
            out.print("<select name='idcategoria' id='idcategoria' onchange='javascript:visualizzaselect("+numero+")'>");
            out.print("<option value='0' selected='selected'>Select category </option>");
            for(Categoria c : DBcategorie.getCategorieFiglie(id)){
                out.println("<option value='"+c.getIdcategoria()+"'>"+c.getNome()+"</option>");
            }
            out.print("</select>");
            out.print("</p>");
            //out.print("<input type='hidden' name='numero' value='"+numero+"'>");
            out.print("<div id='idcategoria"+numero+"'/>");
           }

Questo è il file javascript che sull'evento change della prima select visualizzata prende il risultato della servlete
Codice:
function visualizzaselect(numeroid){

    //chiamo il metodo della servlet
    //metto un div per inserire la seconda select, subito dopo la prima
   //$("#idcategoria").after(" <div id='idcategoria'/>") ;

    $("select#idcategoria").change(function(){
        // gestore evento change della select
        //prendo il valore della select

        var input = $(this) ;

        $("div#idcategoria"+numeroid).load(
                "selectcascata?idcategoria="+input.val(),
                null,
                function(){}) ;


    }) ;

}

$(document).ready(visualizzaselect($("selec#idcategoria").val()));

e infine la pagina .jsp di visualizzazione
Codice:
if(DBcategorie.getCategorieFiglie(0).size()>0){
                            numero = DBcategorie.getCategorieFiglie(0).get(0).getIdcategoria();
                        }%>
                        <td><select id="idcategoria" name="idcategoria" onchange="javascript:visualizzaselect(<%=numero%>)">
                            <!-- la prima voce è 'select a category' con value 0, cosi l'utente fa per forza il click. se la value è 0 io non faccio l'upload-->
                            <option value="0" selected="selected">Select category</option>
                            <%
                            for(Categoria c : DBcategorie.getCategorieFiglie(0)){
                            //sul click prendo il valore e visualizzo le sottocategorie.
                            %><option value="<%=c.getIdcategoria()%>"><%=c.getNome()%></option> <%
                            }
                            %>
                           <!-- <option value="0">Other...</option>-->
                            </select>             
                            <div id="idcategoria<%=numero%>"/>

                        </td>

il metogo getCategorieFiglie() serve a prendere le figlie di una categoria conoscendo il suo id.
Ho creato anche un oggetto Categoria che ha come attributi il nome da visualizzare e l'id.
Al primo caricamento della pagina si visualizzano le 5 categorie principali, il div sottostante viene poi popolato con la funzione js visualizzacategorie()

Ringrazio chiunque voglia aiutarmi, sto sbattendo la testa contro google da giorni ma non ho trovato niente che faccia al mio caso!
 
P

PiccolaAnimaBlu

Nuovo Utente
11 Giu 2010
10
0
0
  • 14 Giu 2010
  • #2
Mi rendo conto che il codice è un po' lungo e non è di facile lettura, ma qualcuno sa almeno dirmi se per firefox e internet explorer l'evento change è definito diversamente?

ho associato la stessa funzione della select anche all'evento click...ma su internet explorer la sitazione non cambia...
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
28
Roma
alessandro1997.netsons.org
  • 15 Giu 2010
  • #3
Ad un'occhiata veloce nel file Javascript compare questa riga:
Codice:
$(document).ready(visualizzaselect($("selec#idcategoria").val()));
Che andrebbe cambiata con:
Codice:
$(document).ready(visualizzaselect($("select#idcategoria").val()));
 
P

PiccolaAnimaBlu

Nuovo Utente
11 Giu 2010
10
0
0
  • 15 Giu 2010
  • #4
Ho cambiato il codice....ma la situazione è la stessa!
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
28
Roma
alessandro1997.netsons.org
  • 16 Giu 2010
  • #5
Prova a togliere i due ultimi parametri alla funzione load(). A questo punto vado per tentativi...
 
P

PiccolaAnimaBlu

Nuovo Utente
11 Giu 2010
10
0
0
  • 17 Giu 2010
  • #6
Almeno mi dai dei suggerimenti su come provare a cambiare un po' di cose.
ore ci provo...non capisco perchè su ie la funzione non va sulla seconda select che si crea automaticamente...
 
P

PiccolaAnimaBlu

Nuovo Utente
11 Giu 2010
10
0
0
  • 17 Giu 2010
  • #7
ancora niente....
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

A
[PHP] select a cascata regione province e comuni
  • apteam
  • 3 Ott 2018
  • PHP
Risposte
5
Visite
2K
PHP 7 Ott 2018
macus_adi
H
Select e Checkbox in cascata.
  • holyjoe
  • 7 Apr 2014
  • PHP
  • 2
Risposte
29
Visite
8K
PHP 14 Apr 2014
f107
L
Ripetere Campi disabilitando input in riferimento ad un valore della select
  • Lucas1
  • 4 Apr 2023
  • jQuery
Risposte
0
Visite
5K
jQuery 4 Apr 2023
Lucas1
L
Ordinare option di una select
  • otto9due
  • 20 Feb 2023
  • Javascript
Risposte
5
Visite
3K
Javascript 22 Feb 2023
otto9due
W
MySQL ciclo in SELECT
  • wolfland
  • 26 Mag 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 26 Mag 2022
wolfland
W
W
MySQL SELECT list dinamica
  • wolfland
  • 2 Feb 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 2 Feb 2022
wolfland
W
M
Select Option dentro una Table
  • mapa
  • 17 Dic 2021
  • jQuery
Risposte
2
Visite
3K
jQuery 19 Dic 2021
mapa
M
G
Colorare menu select attraverso ricerca php
  • Gabriele_04
  • 18 Ott 2021
  • PHP
Risposte
0
Visite
1K
PHP 18 Ott 2021
Gabriele_04
G
L
problema con query select
  • luigithen
  • 25 Mag 2021
  • PHP
Risposte
2
Visite
2K
PHP 26 Mag 2021
luigithen
L
F
menù select dinamico da db in php
  • fata1009
  • 15 Mag 2021
  • PHP
Risposte
3
Visite
2K
PHP 15 Mag 2021
zorro
D
popolare campi tra th alla select
  • dgianmarco
  • 5 Mag 2021
  • PHP
  • 2
Risposte
36
Visite
4K
PHP 3 Giu 2021
zorro
M
Estrarre valore con SELECT COUNT
  • miagy
  • 24 Mar 2021
  • PHP
Risposte
0
Visite
1K
PHP 24 Mar 2021
miagy
M
M
Creare un campo input select quantità di un numero intero prelevato dal db
  • maxnegri2036
  • 10 Mar 2021
  • PHP
Risposte
3
Visite
1K
PHP 11 Mar 2021
maxnegri2036
M
L
Select Dinamiche...da txt?
  • lucign0l0
  • 17 Feb 2021
  • PHP
Risposte
3
Visite
2K
PHP 18 Feb 2021
marino51
E
Php select option e ajax
  • Emanuele85
  • 17 Feb 2021
  • PHP
  • 2
Risposte
23
Visite
6K
PHP 11 Mar 2021
Emanuele85
E
R
Select concatenata che non funziona la seconda volta
  • _Rosy_
  • 29 Nov 2020
  • Ajax
Risposte
3
Visite
3K
Ajax 29 Nov 2020
WmbertSea
L
select join e sottrazione punti
  • luigithen
  • 1 Ott 2020
  • PHP
Risposte
13
Visite
2K
PHP 2 Ott 2020
luigithen
L
L
input dati con inser into select ?
  • luigithen
  • 24 Set 2020
  • PHP
Risposte
4
Visite
1K
PHP 25 Set 2020
luigithen
L
V
hierarchy-select
  • Vera
  • 21 Set 2020
  • jQuery
Risposte
0
Visite
2K
jQuery 21 Set 2020
Vera
V
Select concatenate php sql ajax
  • Emix
  • 3 Ago 2020
  • PHP
Risposte
2
Visite
2K
PHP 4 Ago 2020
Emix
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • Javascript
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?