5 Stimmen

Wie zeigt man Dropdown automatisch erweitert, so dass es zeigt alle Optionen, wenn die Seite geladen

Ich muss das DropDown-Element (HTML-Auswahlelement) zunächst erweitert anzeigen, wenn es geladen wird, so dass alle Optionen im DropDown-Element angezeigt werden. Ich habe ziemlich viel gesucht, aber überraschenderweise habe ich keine Antwort auf ein so einfaches Problem gefunden. Ich verwende ASP.NET MVC mit Jquery.

0 Stimmen

Nicht-direkte Lösungen: 1) die erste Option schreit "Wählen Sie Ihr Land " oder ähnliches; 2) Optionsfelder verwenden.

3voto

karim79 Punkte 333786

Hier ist ein kleines Mashup (das noch überarbeitet und optimiert werden muss), das Ihnen den Einstieg erleichtern soll:

<div style="position:relative">
    <select style="position: absolute">
        <option>option 1</option>
        <option>option 2</option>
        <option>option 3</option>
        <option>option 4</option>
        <option>option 5</option>
    </select>
</div>

<script type="text/javascript">

$(document).ready(function() {
    $("select").one("focus", function() {
        this.size = this.options.length;
    }).one("click", function() {
        this.size = 1;
    }).one("blur", function() {
        this.size = this.options.length;
    }).focus();
});

</script>

0 Stimmen

Danke für die Lösung. Die Lösung funktioniert, aber ich muss die Größe wieder auf Mausklick irgendwo anders einstellen. Aber ich kann das leicht hinzufügen.

0 Stimmen

@mohang - Ah, ich habe gerade eine blur Ereignis-Handler, der einmal mit one um dies zu tun (was vielleicht ein wenig übersichtlicher ist).

3voto

Sai Babu Punkte 51

Sie könnten Ihre HTML wie diese

<html>
<select id="abc">
    <option>option 1</option>
    <option>option 2</option>
    <option>option 3</option>
    <option>option 4</option>
    <option>option 5</option>
</select>

</html>

Unten, ist die JAVASCRIPT Funktion, die sich automatisch erweitert.

<script type="text/javascript">
    $(document).ready(function() {
        var dropdown = document.getElementById("abc");
        var event;
        event = document.createEvent('MouseEvents');
        event.initMouseEvent('mousedown', true, true, window);
        dropdown.dispatchEvent(event);
    });
</script>

0 Stimmen

Ich wünschte, die Leute würden mehr generischen Beispielcode schreiben, nicht jeder verwendet jQuery.

4 Stimmen

Die Frage lautet: "Ich verwende ASP.NET MVC mit Jquery", und es ist tagged 'Jquery' und der Körper der Funktion ist generisches Javascript.

2voto

Marco Demaio Punkte 32210

Sie könnten in Ihren HTML-Code schreiben:

   <select size="3" name="test" id="test">
      <option value="1">one</option>
      <option value="2">two</option>
      <option value="3">three</option>
   </select>

und dann über Javascript einen Timer setzen, der nach einer gewissen Zeit das Attribut "Größe der Auswahlbox" auf 1 ändert. Zum Beispiel am Ende Ihrer Seite (vor dem Body-Tag) platzieren Sie diesen Code:

<script type="text/javascript">
   window.setTimeout(function() { document.getElementById('test').size = 1; }, 5000); //5000 = 5 seconds
</script>

0 Stimmen

Das reicht aus, um dem Benutzer mitzuteilen, dass die Liste aufgefüllt ist. Bei mir funktioniert es nicht. Aber danke für die Mühe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X