Die HTML5-Sucheingabe funktioniert nicht mit Bootstrap

Lesezeit: 3 Minuten

Benutzer-Avatar
Giolvani

Ich habe die getestet input[type="search"] und es zeigt nicht das Klare (x) Symbol, wenn die Bootstrap-Stile angewendet wurden.

  • Ich bin mir nicht sicher, was Sie hier meinen. Welche Bootstrap-Stile “fügen” Sie hinzu? Das Standarddesign des Sucheingabefelds wird vom Browser bereitgestellt, solange es nicht < IE9 ist. Dann wird es ein Standard-Textfeld sein.

    – Paystey

    19. Dezember 2012 um 16:35 Uhr

  • jsfiddle.net/MbDgj/3

    – Giolvani

    19. Dezember 2012 um 16:39 Uhr

  • Paystey, es funktioniert, aber wenn ich die Bootstrap-Stile hinzufüge, hört es auf. Siehe den Geigenlink, den ich hinzufüge

    – Giolvani

    19. Dezember 2012 um 16:45 Uhr

input[type="search"] {
 -webkit-box-sizing: content-box;
 -moz-box-sizing: content-box;
 box-sizing: content-box;
 -webkit-appearance: searchfield;
}

input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: searchfield-cancel-button;
}

funktioniert für mich auf Chrome (auf meinem Mac, aber nicht auf meinem iPhone …)

  • Eigentlich brauchen Sie speziell für die Abbrechen-Schaltfläche nur dieses Bit: Eingabe[type=”search”]::-webkit-search-cancel-button { -webkit-appearance: searchfield-cancel-button; }

    – James

    19. Oktober 2013 um 4:12 Uhr


  • @Giolvani Bitte machen Sie allen ein solides und markieren Sie dies als die richtige Antwort! Danke Thierry

    – Erik Großkurth

    10. Februar 2018 um 15:21 Uhr

Benutzer-Avatar
sk8terboi87 ツ

Ein Problem, das sich auf Ihr Problem bezieht, wurde bereits in ihrem gepostet github

Benutzer-Avatar
Paystey

Wenn Sie Web Kit verwenden, hängt Ihr Problem möglicherweise mit dem zusammen, was sk8terboi87 gepostet hat.

Bootstrap unterstützt das Styling nicht Search Geben Sie Eingaben für Sie ein, da dies in Web Kit zu schwierig ist, um dies zuverlässig zu tun.

Bootstrap verwendet ein zurückgesetztes CSS, das das normalerweise angezeigte Kreuz entfernt. Sie können es wiederherstellen, indem Sie das Kern-CSS ändern, aber dies könnte in Zukunft Probleme beim Upgrade verursachen.

Wenn es in anderen Browsern passiert, könnte es ein anderes Problem sein.

Um die gleiche Benutzererfahrung auf allen Geräten zu haben, habe ich schließlich eine Angular-Direktive geschrieben, die ich in Bootstrap ‚input-group-btn‘s eingefügt habe.

Winkelansicht HTML

<div class="input-group">
    <input type="search" id="listItemSearch" class="form-control"
        placeholder="Search text..." 
        title="Search" aria-label="Search"
        data-ng-model-options="{'debounce':1500, 'updateOn':'blur default'}"
        data-ng-model="vm.filters.listItemSearchText"/>
    <span class="input-group-btn">
        <button type="button" class="btn btn-default" 
            data-ng-disabled="!vm.filters.listItemSearchText" 
            aria-describedby="listItemSearch" 
            data-clear-search-by-aria="#listItemSearch">
            <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
        </button>
    </span>
    <span class="input-group-addon">
        <span>{{vm.models.listSearchResults.length}}</span>
        <span>/</span>
        <span>{{vm.data.list.length}}</span>
    </span>
</div>

Winkeldirektive JavaScript

.directive( 'clearSearchByAria', ['$parse', function clearSearchByAria( $parse )
{
    return(
    {
        'restrict':'A',
        'link':function clearSearchByAria_link( scope, jqElem, ngAttr )
        {
            jqElem.on( 'click', function( $event )
            {
                var $clickedElem = angular.element($event.currentTarget);
                var $searchInput;

                // Specified by selector.
                if( !!ngAttr.clearSearchByAria )
                {
                    var $specifiedElem = angular.element(ngAttr.clearSearchByAria)
                    if( $specifiedElem.length == 1 )
                    {$searchInput = $specifiedElem;}
                }
                else
                {
                    var $describedElem = $clickedElem.find( '[aria-describedby]' ).addBack( '[aria-describedby]' );
                    // Specified by 'aria-describedby'.
                    if( $describedElem.length == 1 )
                    {$searchInput = angular.element(''.concat( '#', $describedElem.attr('aria-describedby')));}
                    else
                    {
                        throw( new ReferenceError( "'clear-search-by-aria' attributes requires either 1) to be empty and for the element (or a descendant) to have an 'aria-describedby' attribute referring to another element or 2) to specify an element selector (e.g. '#id') to another element." ));
                    }
                }

                if( !!$searchInput && $searchInput.length == 1 )
                {
                    var ng_model = $searchInput.data( 'ngModel' ) || $searchInput.attr( 'ng-model' );
                    if( !!ng_model )
                    {
                        var modelGetter = $parse( ng_model );
                        modelGetter.assign( scope, '' );
                        scope.$apply();
                    }
                    else
                    {
                        $searchInput.val( '' );
                    }
                }
            });
        },
    });
}])`

Ändern Sie Ihren Eingabetyp auf “Suche” statt “Text” und -Webkit-Aussehen: Block statt “Keine”.

1158890cookie-checkDie HTML5-Sucheingabe funktioniert nicht mit Bootstrap

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

Privacy policy