2

http://www.bootply.com/YAQrE52K6XAutofokus für Bootstrap-select/select2

$("#dataCombo").selectpicker({ 
    multiple:true 
    }); 

    <div class="container"> 

    <h3>Multiple Select</h3> 
    <select id="dataCombo" class="selectpicker" data-live-search="true" multiple="multiple" style="width:400px;"> 

    <option value="one">One</option> 
    <option value="two">Two</option> 
    <option value="three">Three</option> 
    <option value="four">Four</option> 
    <option value="five">Five</option> 
    <option value="six">Six</option> 
    </select> 

</div> 

Ich möchte Autofokus auszuschalten, so dass die Eingabe fragt nicht nach mir sofort suchen nach dem Drop-Down klicken. Versucht, .blur usw. zu verwenden ... aber bis jetzt nichts. Ich habe mich nach einer Lösung umgesehen. Die Verwendung von "bootstrap-select" von "select2" wurde aufgrund desselben Problems verschoben. Die Tastatur auf Geräten erscheint für die mehrere Dropdown-Elemente

+0

Möchten Sie die Eingabe deaktivieren, die die Suche ermöglicht, oder Sie möchten nur, dass der Autofokus nicht angezeigt wird? – Dekel

+0

Keine automatische Fokussierung - Ich möchte trotzdem das Suchfeld verwenden, aber nicht sofort, wenn Sie auf Dropdown klicken. Dadurch wird die sofortige Anzeige der Tastatur auf den Geräten gestoppt. –

Antwort

3

Ich konnte dies nicht mit bootstrap-select beheben (scheint, sie haben einige Probleme mit dem Auslösen der show.bs.select und shown.bs.select Ereignisse), aber da Sie auch erwähnt, dass Sie versucht haben dies mit select2, hier ist eine Lösung für die select2:

$("#dataCombo").select2({ 
    closeOnSelect: false 
    }); 
    $("#dataCombo").on('select2:open', function() { 
    $(document.activeElement).blur() 
    }); 

prüfen dieses Beispiel:
https://jsfiddle.net/yw61h28z/

Update - 2016/12/05

Verwaltet, um es zur Arbeit zu bringen (dauerte etwas Zeit mit den Fokus/Blur/Ziele Dinge zu spielen). Hier

$(document).ready(function() { 
    $("#dataCombo").select2({ 
    closeOnSelect: false 
    }); 
    $("#dataCombo").one('select2:open', function (e) { 
    $(document.activeElement).blur() 
    }); 
    $("#dataCombo").on('select2:close', function(e) { 
    if ($(event.target).parents('.select2').length) { 
     // The closing was done inside the select2 container 
    } else { 
     $("#dataCombo").one('select2:open', function (e) { 
     $(document.activeElement).blur() 
     }); 
    } 
    }); 
}); 

ist das Update auf meiner ursprünglichen jsfiddle:
https://jsfiddle.net/yw61h28z/4/

Hier ist die Idee hinter dem Code:
1. Das erste Mal, wenn die select2 geöffnet wird - verwischen die input (aber nur einmal) - dies stellt sicher, dass das Menü select2 geöffnet ist, aber input ist nicht fokussiert (so dass die Tastatur nicht angezeigt wird).
2. Beim Schließen des Menüs select2 - überprüfen Sie das Element, das den Abschluss verursacht hat.
2.1. Wenn dieses Element Teil des Blocks select2 ist - ignorieren Sie es und schließen Sie das Menü.
2.2 Sonst - Wenn das Menü select2 das nächste Mal geöffnet wird, geben wir blur die input (wieder - nur 1 Mal).

+0

danke für deine Antwort oben. Dieses kleine Problem damit ist, dass wenn Sie jetzt Suche verwenden möchten, Sie nur schaffen können, 1 Zeichen zu geben, bevor es Fokus verliert, weil die Auswahl auf dem Typ öffnet, der die Unschärfe auslöst. Irgendwelche Ideen zur Reparatur für die Geige, die du erstellt hast? –

Verwandte Themen