2

検索を有効にしてブートストラップの複数選択を使用しています。すべてがうまく機能します。問題は、ユーザーがドロップダウン オプションに存在しない文字列を検索すると、「結果が見つかりません」などのメッセージが表示されないことです。空白のドロップダウンが表示されます。

検索文字列がドロップダウン値と一致しない場合、「結果が見つかりません」というメッセージを表示するにはどうすればよいですか。

コードは次のとおりです。

$('#mydropdown').multiselect({
      buttonWidth: '80%',
      enableCaseInsensitiveFiltering: true,
      onChange: function(option, checked, select){
          setValue();
      }
});

ありがとう、トゥシャール

4

2 に答える 2

0

現在のバージョンの bootstrap-multiselect では、bootstrap-multiselect.js ファイルに次の変更を加えました。私はソース ファイルを編集するのは嫌いですが、結果が表示されないというメッセージはクライアントからの要求でした。

このコードを「buildFilter: function()」の上に配置します。

_$customNoResultsLi: null,
_toggleCustomNoResults: function () {
    if (this._$customNoResultsLi === null) {
        this._$customNoResultsLi = $('<li class="customNoResults">No Search Results</li>')
            .appendTo(this.$ul);
    }
    if (this.$ul.find('li:not(.filter-hidden) input[type="checkbox"]').length == 0) {
        this._$customNoResultsLi.show();
    } else {
        this._$customNoResultsLi.hide();
    }
},

次に、buildFilter() 内で、「this.updateSelectAll();」の直前に次を追加します。

//CUSTOM CODE
this._toggleCustomNoResults();

基本的に、このコードは、すべてのチェックボックスが非表示になっているときに「結果なし」メッセージを追加します。

于 2015-10-05T19:29:41.193 に答える
0

This external code provides "no result match " with search key word

$(document).on("keyup", ".multiselect-search", function (e) {

    var thisObj = this;

    setTimeout(function () {

        if ($(thisObj).parent().parent().parent().find("li.multi-no-results").length == 0)
            $(thisObj).parent().parent().parent().append('<li style="display:none" class="multi-no-results cropin-multi-select-noresult-lable"><a  href="#">No results matched ""</a></li>');

        var totalOptions = $(thisObj).parent().parent().parent().parent().siblings().last().find("option").length;
        var totalFilteredOptins = totalOptions - $(thisObj).parent().parent().parent().find("li.filter-hidden").length;

        if (totalFilteredOptins <= 0) {
            $(thisObj).parent().parent().parent().find("li.multi-no-results").find("a").text('No results matched "' + $(thisObj).val() + '"');
            $(thisObj).parent().parent().parent().find("li.multi-no-results").show();
        }
        else {
            $(thisObj).parent().parent().parent().find("li.multi-no-results").hide();
        }

    }, 300);

});
于 2016-05-22T08:09:16.187 に答える