Wie kann ich ein bearbeitbares Kombinationsfeld in HTML/Javascript erstellen?

Lesezeit: 5 Minuten

Ich muss Benutzern die Auswahl eines Elements aus einer Dropdown-Liste ermöglichen, ihnen aber auch erlauben, stattdessen beliebigen Text einzugeben, selbst wenn er nicht mit einem Element in der Liste übereinstimmt. Wie kann ich das auf einer Webseite mit HTML und Javascript erreichen?

Die select Feld lässt Benutzer keinen Text eingeben, und das input Textfeld zeigt nicht die bevorzugten Alternativen.

Alle Elemente müssen angezeigt werden, wenn der Benutzer das Dropdown-Menü öffnet, daher kann es sich nicht um eine einfache automatische Vervollständigung handeln, die nur übereinstimmende Elemente anzeigt.

  • Sie könnten machen Sie das selbst (Tipp: Ersetzen Sie die Auswahl durch Ihr eigenes HTML, das sich wie eine Auswahlbox verhält), aber warum das Rad neu erfinden? jqueryui.com/demos/autocomplete

    – Boldewyn

    16. Juni 2010 um 9:42 Uhr

  • @ Boldewyn: Schade, dass Sie dies nicht in eine Antwort aufgenommen haben. Denn dies ist tatsächlich die gleiche Kontrolle, nach der OP fragt. Die Demo-Seite zeigt es tatsächlich auf der ComboBox, die als normale Auswahl + Dateneingabe fungiert.

    – Robert Koritnik

    3. September 2012 um 17:04 Uhr

  • @RobertKoritnik Ah, ja. Aber sie haben dieses Beispiel vor kurzem hinzugefügt als meine Antwort. Damals im Jahr 10 war es ein brandneues Widget.

    – Boldewyn

    4. September 2012 um 8:45 Uhr

  • Hier auf dieser Website finden Sie einige Vorschläge dazu: stackoverflow.com/questions/2141357/…

    – Kameramann

    8. Dezember 2012 um 10:53 Uhr

  • mögliches Duplikat von Wie kann ich eine bearbeitbare Dropdownliste in HTML erstellen?

    – Ed Stimmzettel

    30. Juli 2015 um 21:51 Uhr

Welche Browser unterstutzen HTML 5 Tag auf Windows heute
Tom Güllen

Hier ist ein Skript dafür:
Demo,
Quelle

Oder eine andere, die etwas anders funktioniert:
Link entfernt (Seite existiert nicht mehr)

  • Danke! Ich gehe mit dem ersten Skript.

    – Christian Daven

    16. Juni 2010 um 10:17 Uhr

  • @ChristianDavén Wo hast du das Quell-js-Skript im ersten Link gefunden?

    – Form

    29. Januar 2015 um 13:48 Uhr

  • @shapeare, ich kann mich nicht erinnern, sorry!

    – Christian Daven

    29. Januar 2015 um 13:53 Uhr

Ich weiß, dass diese Frage bereits vor langer Zeit beantwortet wurde, aber dies ist für andere Leute, die hier landen und Probleme haben, das zu finden, was sie brauchen. Ich hatte Probleme, ein vorhandenes Plugin zu finden, das genau das tat, was ich brauchte, also schrieb ich mein eigenes jQuery-UI-Plugin, um diese Aufgabe zu erfüllen. Es basiert auf dem Combobox-Beispiel auf der jQuery-UI-Site. Hoffentlich hilft es jemandem.

https://github.com/tmooney3979/jquery.ui.combify

Sie können meine Implementierung der bearbeitbaren Combobox ausprobieren http://www.zoonman.com/projects/combobox/

  • Vielen Dank, dass Sie dies tun! Es scheint einfach genug!

    – Rückfall

    19. Oktober 2013 um 22:39 Uhr

Ich suchte auch nach einer Antwort, aber alles, was ich finden konnte, war veraltet.

Dieses Problem ist seit HTML5 behoben: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist

<label>Choose a browser from this list:
<input list="browsers" name="myBrowser" /></label>
<datalist id="browsers">
  <option value="Chrome">
  <option value="Firefox">
  <option value="Internet Explorer">
  <option value="Opera">
  <option value="Safari">
  <option value="Microsoft Edge">
</datalist>

Wenn ich das nicht gefunden hätte, wäre ich mit diesem Ansatz gegangen:

http://www.dhtmlgoodies.com/scripts/form_widget_editable_select/form_widget_editable_select.html

Ich denke, das wird deinen Anforderungen entsprechen:

https://github.com/RUPOJS/jsCombo

  • Das ist nur eine Link-Antwort, also fügen Sie bitte weitere Informationen hinzu, da die Seite, auf die der Link verweist, möglicherweise verschwindet.

    – Beryllium

    7. August 2013 um 7:23 Uhr

  • danke kumpel das war eigentlich was ich gesucht habe. 🙂

    – Visrant

    20. November 2013 um 8:14 Uhr

Vergessen Sie das Datalist-Element, das eine gute Lösung für die Autocomplete-Funktion ist, aber nicht für die Combobox-Funktion.

CSS:

.combobox {
    display: inline-block;
    position: relative;
}

.combobox select {
    display: none;
    position: absolute;
    overflow-y: auto;
}

html:

<div class="combobox">
    <input type="number" name="" value="" min="" max="" step=""/><br/>
    <select size="3">
        <option value="0"> 0</option>
        <option value="25"> 25</option>
        <option value="40"> 40</option>
    </select>
</div>

js (jQuery):

$('.combobox').each(function() {
    var
        $input = $(this).find('input'),
        $select = $(this).find('select');
    function hideSelect() {
        setTimeout(function() {
            if (!$select.is(':focus') && !$input.is(':focus')) {
                $select
                    .hide()
                    .css('z-index', 1);
            }
        }, 20);
    }
    $input
        .focusin(function() {
            if (!$select.is(':visible')) {
                $select
                    .outerWidth($input.outerWidth())
                    .show()
                    .css('z-index', 100);
            }
        })
        .focusout(hideSelect)
        .on('input', function() {
            $select.val('');
        });
    $select
        .change(function() {
            $input.val($select.val());
        })
        .focusout(hideSelect);
});

Dies funktioniert auch dann einwandfrei, wenn Sie Texteingabe anstelle von Zahlen verwenden.

  • Das ist nur eine Link-Antwort, also fügen Sie bitte weitere Informationen hinzu, da die Seite, auf die der Link verweist, möglicherweise verschwindet.

    – Beryllium

    7. August 2013 um 7:23 Uhr

  • danke kumpel das war eigentlich was ich gesucht habe. 🙂

    – Visrant

    20. November 2013 um 8:14 Uhr

Wie kann ich ein bearbeitbares Kombinationsfeld in HTMLJavascript erstellen
Atom217

versuchen Sie dies zu tun

<div style="position: absolute;top: 32px; left: 430px;" id="outerFilterDiv">
<input name="filterTextField" type="text" id="filterTextField" tabindex="2"  style="width: 140px;
    position: absolute; top: 1px; left: 1px; z-index: 2;border:none;" />
        <div style="position: absolute;" id="filterDropdownDiv">
<select name="filterDropDown" id="filterDropDown" tabindex="1000"
    onchange="DropDownTextToBox(this,'filterTextField');" style="position: absolute;
    top: 0px; left: 0px; z-index: 1; width: 165px;">
    <option value="-1" selected="selected" disabled="disabled">-- Select Column Name --</option>
</select>

Bitte sehen Sie sich das folgende Beispiel an Geige

  • Die Frage war, wie man Combobox bearbeitbar macht, Sie haben gerade Textbox über Combobox überlappt. Dies ist nicht die richtige Lösung, denke ich.

    – Visrant

    15. November 2013 um 7:22 Uhr

  • funktioniert einwandfrei, wenn Sie keine benutzerdefinierten Schaltflächen verwenden möchten. dh die Verwendung des standardmäßigen Satzes von Schaltflächen, die mit dem Browser bereitgestellt werden

    – Atom217

    20. November 2013 um 7:23 Uhr


  • @Vishrant nein, er hat ein Textfeld auf a überlappt Dropdown/auswählen ein zu erstellen Kombination Kasten

    – Ron Newcomb

    14. Februar 2017 um 22:10 Uhr

  • Aber es funktioniert nicht. füge einige

    – Ron Newcomb

    14. Februar 2017 um 22:11 Uhr

993930cookie-checkWie kann ich ein bearbeitbares Kombinationsfeld in HTML/Javascript erstellen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy