Frage

Hintergrund

Ich habe diese Form, dass Anwendungen ausschließlich Javascript ~ 5k Einträge durchsuchen (Lieferanten) und füllen Sie eine dropdown von ihnen (Fabriken, ~ 10k Einträge). Gerade jetzt, es ist eine Javascript-required Form. Ich mag es so machen, dass JavaScript-Fehler nicht mehr die Form unbrauchbar machen, aber die Anzahl der Einträge und die sequentielle Natur der Einträge lassen mich ohne idiomatische Weise nur eine einfache HTML-Version zur Verfügung zu stellen.

Die Probleme


Sequential / hierarchische Dropdown-Listen

Ein Beispiel Dropdown wo Reihenfolge ist wichtig: http://www.javascriptkit.com/javatutors/selectcontent2.shtml

Damit zeigt „Filterung“ des sequentiellen / hierarchische Drop-Down-Inhalts, wobei die Auswahl in der zweiten Stadt gefiltert werden Drop-Down auf der Grundlage der Auswahl im ersten Land Dropdown-Menü. Aber nehmen Sie die Javascript weg, und es könnte sofort ein Chaos geworden. in den USA Madrid? Berlin in Frankreich? Die Sequenz beschädigt wird.

Auswahlmenüs, die große Anzahl von Optionen

haben

Wenn Sie eine Auswahl Dropdown mit 10k möglichen Optionen haben, ist es ziemlich einfach zu Filter / Suche durch sie mit Javascript. Der Umgang mit diesen Optionen ohne Javacript, auf der anderen Seite, ist viel schwieriger.

Wie bieten Sie Ihre Benutzer mit all den Möglichkeiten, wenn nur alle Optionen sie zu laden alle würden ihren Browser sprengen?


Mögliche Lösungen

Sequential / Hierarchical Select Boxen:

  • Server-Seite 2-teilige Formen.
  • ? Wählen Sie die Option Gruppen?
  • ???

Wählt mit einer großen Anzahl von Optionen:

  • Server-Seite 2-teiligen Suchmasken.
  • Serverseitige Textsuche Abgleich von Eintragsnamen.
  • ???

Einfache Links zu einfall Lösungen begrüßen zu können.

War es hilfreich?

Lösung

Die einzige Lösung, die ich mir vorstellen kann, ist eine Form zu verwenden, um jedes Mal, wenn Sie einreichen müssen Ihre Ergebnisse verengen. Sie beginnen, indem Sie eine Seite mit einer Lieferanten Land auszuwählen. Dass einreicht, und gibt eine Seite, die zeigt das ausgewählte Land als Text und jetzt einen Drop-Down hat das nächste Feld, wie Städte auszuwählen. Auf diese Weise, die Server können auf jeder Ebene die Filterung tun.

Hier ist ein JSP-Beispiel:

<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>

Wenn Sie ein Land auswählen, das Formular abschickt. Der Server verarbeitet das Land, gibt die gleiche Seite mit dem country Feldwert und eine Liste der möglichen Städte für Ihren nächsten Drop-down. Doing es so können Sie nur auf Formular abschickt verlassen (und nicht als JavaScript), um Filterdaten sequentiell. Der Server würde für die Verfolgung verantwortlich sein, wie weit der Benutzer. Der offensichtliche Nachteil dieser Lösung ist, dass Ihre JSP wäre ziemlich chaotisch sein, mit all den verschachtelten <c:choose> Blöcken.
Sie können auch eine Hybrid-Lösung versuchen: wenn die Seite geladen wird, herauszufinden, ob Ihr JavaScript geladen ist. Wenn ja, ersetzen Sie Ihre Anmeldeformulare mit einfachem HTML, die AJAX hat dahinter die nächste Reihe von Optionen zu füllen. Auf diese Weise Ihre Seite muss nicht ein paar Mal aktualisiert werden, wenn die JavaScript hat Last, aber immer noch funktionsfähig sein, wenn die JavaScript nicht Last. Nur so ein Gedanke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top