Domanda

Sfondo

Ho questo modulo che utilizza JavaScript esclusivamente per la ricerca in ~ 5k voci (fornitori) e compilare un menu a discesa Seleziona da loro (fabbriche, ~ voci 10k). In questo momento, si tratta di una forma di javascript obbligatorio. Mi piacerebbe fare in modo che gli errori javascript rendono non più sotto forma inutilizzabile, ma il numero di voci e la sequenzialità delle voci mi lasciano senza un modo idiomatico per fornire solo una versione base HTML.

Le Pubblicazioni


sequenziali dropdowns / gerarchiche

Un esempio discesa in cui sequenza è importante: http://www.javascriptkit.com/javatutors/selectcontent2.shtml

In modo che mostra "filtraggio" dei contenuti discesa sequenziale / gerarchica, in cui le selezioni nella seconda discesa Città vengono filtrati in base alle selezioni nel primo menu a discesa Paese. Ma togliere il javascript, e potrebbe diventare istantaneamente un pasticcio. Madrid negli Stati Uniti? Berlino in Francia? La sequenza è danneggiato.

Dropdowns che hanno un gran numero di opzioni

Se si dispone di un menu a discesa selezionare con 10k possibili opzioni, è abbastanza facile per filtrare / ricerca attraverso di loro con javascript. Trattare con quelle opzioni senza Javacript, d'altra parte, è molto più difficile.

Come si fa a fornire agli utenti tutte le possibilità quando appena caricano tutte le opzioni li avrebbe saltare in aria il loro browser?


Soluzioni possibili

sequenziale / gerarchica Selezionare le caselle:

    forme
  • lato server 2-part.
  • ? Gruppi Selezionare l'opzione?
  • ???

Seleziona con un gran numero di opzioni:

  • lato server 2-part moduli di ricerca.
  • Server-side ricerca di nomi corrispondenti di ingresso.
  • ???

Semplici collegamenti a soluzioni ingegnose benvenuti.

È stato utile?

Soluzione

L'unica soluzione che mi viene in mente è quello di utilizzare un modulo di presentare ogni volta che è necessario restringere i risultati. Si inizia mostrando una pagina di selezionare il paese di un fornitore. Che presenta, e restituisce una pagina che mostra il paese selezionato come testo e ora ha un menu a discesa per selezionare il campo successivo, come le città. In questo modo, il server può fare il filtraggio ad ogni livello.

Ecco un esempio JSP:

<c:choose>
    <c:when test="${empty country}">
        Country: 
        <form>
            <select>
                <option value="USA">America</option>
                <option value="DEU">Germany</option>
                <%-- ... --%>
            </select>
        </form>
    </c:when>
    <c:otherwise>
        Country: ${country} 
        <c:choose>
            <c:when test="${empty city}">
                <input type="submit" value="Change" />   <%-- Button to change the previous value --%>

                <%-- your form for choosing a supplier's city --%>                    
            </c:when>
            <c:otherwise>
                <%-- continue filtering until you have all of the data --%>
            </c:otherwise>
        </c:choose>

    </c:otherwise>
<c:choose>

Quando si seleziona un paese, la forma sostiene. Il server elabora il paese, restituisce la stessa pagina con il valore del campo country e un elenco di città possibili per la vostra prossima discesa. Facendo in questo modo permette di fare di sottomette forma (invece di JavaScript) di filtrare i dati in modo sequenziale. Il server sarebbe responsabile per tenere traccia di quanto lungo l'utente è. La caduta evidente di questa soluzione è che il vostro JSP sarebbe piuttosto disordinato, con tutti i blocchi annidati <c:choose>.
Si potrebbe anche provare una soluzione ibrida: quando la pagina viene caricata, scoprire se è stato caricato il tuo JavaScript. In tal caso, sostituire i moduli di presentazione con semplice HTML che ha AJAX dietro di esso per popolare la prossima serie di opzioni. In questo modo, la pagina non ha bisogno di rinfrescare un po 'di volte in cui fa il JavaScript di carico, ma sarà comunque funzionale se il JavaScript non di carico. Solo un pensiero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top