首页 > 解决方案 > 引导数据表搜索输入不会改变

问题描述

我使用引导数据表,并且我有一个搜索输入,无论我做什么都不会删除搜索文本并添加占位符。我在堆栈和谷歌上看到了这里的例子,但这没有帮助。

我相信这是搜索输入的 js:

function _fnFeatureHtmlFilter ( settings )
    {
        var classes = settings.oClasses;
        var tableId = settings.sTableId;
        var language = settings.oLanguage;
        var previousSearch = settings.oPreviousSearch;
        var features = settings.aanFeatures;
        var input = '<input type="search" class="'+classes.sFilterInput+'"/>';

        var str = language.sSearch;
        str = str.match(/_INPUT_/) ?
            str.replace('_INPUT_', input) :
            str+input;

        var filter = $('<div/>', {
                'id': ! features.f ? tableId+'_filter' : null,
                'class': classes.sFilter
            } )
            .append( $('<label/>' ).append( str ) );

        var searchFn = function() {
            /* Update all other filter input elements for the new display */
            var n = features.f;
            var val = !this.value ? "" : this.value; // mental IE8 fix :-(

            /* Now do the filter */
            if ( val != previousSearch.sSearch ) {
                _fnFilterComplete( settings, {
                    "sSearch": val,
                    "bRegex": previousSearch.bRegex,
                    "bSmart": previousSearch.bSmart ,
                    "bCaseInsensitive": previousSearch.bCaseInsensitive
                } );

                // Need to redraw, without resorting
                settings._iDisplayStart = 0;
                _fnDraw( settings );
            }
        };
        var jqFilter = $('input', filter)
            .val( previousSearch.sSearch )
            .attr( 'placeholder', language.sSearchPlaceholder )
            .bind(
                'keyup.DT search.DT input.DT paste.DT cut.DT',
                _fnDataSource( settings ) === 'ssp' ?
                    _fnThrottle( searchFn, 400 ):
                    searchFn
            )
            .bind( 'keypress.DT', function(e) {
                /* Prevent form submission */
                if ( e.keyCode == 13 ) {
                    return false;
                }
            } )
            .attr('aria-controls', tableId);

        // Update the input elements whenever the table is filtered
        $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
            if ( settings === s ) {
                // IE9 throws an 'unknown error' if document.activeElement is used
                // inside an iframe or frame...
                try {
                    if ( jqFilter[0] !== document.activeElement ) {
                        jqFilter.val( previousSearch.sSearch );
                    }
                }
                catch ( e ) {}
            }
        } );

        return filter[0];
    }

如您所知,数据表不显示在 HTML 中,所以它的 js.

怎么看,看搜索输入

我希望它看起来如何

标签: javascriptjquerycssdatatables

解决方案


您可以使用以下代码

oLanguage: {
            "sSearch": ""
        },

对于占位符,输入以下代码

$('.dataTables_filter input').attr("placeholder", "search...");


推荐阅读