Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Select a cascata in js

  1. #1

    Select a cascata in js

    Buongiorno.
    Attraverso javascript ho realizzato delle select dinamiche. sull'evento onchange richiamo la funzione visualizzaselect() che fa comparire una nuova select sotto alla prima e così via.
    ad esempio...per classificare un "oggetto" nella prima select ho le categoria "mamme" :animali, vegetali, oggetti, ecc...
    cliccando su animali sotto compare una nuova select con rettili, mammiferi, ucelli....e cosi via.
    Ho notato però che il comportamento non è quello desiderato.
    su firefox l'evento si scatena solo al secondo click, mentre su internet esplorer funziona soltanto sulla prima select.

    qualcuno sa dirmi come mai?

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

    Re: Select a cascata in js

    Originariamente inviato da PiccolaAnimaBlu
    qualcuno sa dirmi come mai?
    come? tirando a indovinare?

  3. #3
    se riesci anche così mi va bene lo stesso
    oppure, se vuoi, posso darti dei dettagli che secondo te sono utili a capire meglio il problema

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    senti, se vuoi avere maggiori possibilita' di risposta metti in condizioni gli altri di perdere meno tempo possibile
    un link dove vedere tutto in azione e' sempre preferibile

    ciao

  5. #5
    questa è la parte del codice di visualizzazione della prima select

    codice:
    <select id="idcategoria" name="idcategoria" onchange="javascript:visualizzaselect(<%=numero%>)">                          
    <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> <%}%>                          
                                   </select>                                        
    <div id="idcategoria<%=numero%>"/>

    questa è la funzione nel file .js
    codice:
    function visualizzaselect(numeroid){ //chiamo il metodo della servlet     
    $("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 servlet che scrive l'html
    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);              }            
     if(id!=0){           
     if(DBcategorie.getCategorieFiglie(id).size()>0){           
     int numero = DBcategorie.getCategorieFiglie(id).get(0).getIdcategoria();                        out.print("
    
    ");            
     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("<div id='idcategoria"+numero+"'/>");            }            }

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.