Javascript 要添加并搜索此增量搜索插件吗

Javascript 要添加并搜索此增量搜索插件吗,javascript,jquery,regex,search,Javascript,Jquery,Regex,Search,我想向以下增量搜索jQuery插件添加和搜索功能,该插件可以从选择框中搜索选项元素。 我正在尝试这些想法,但无法成功地编写代码。 -首先,我想将空白定义为分隔符。 -接下来,我想将该变量与选项元素中的其他空格区分开来 顺便说一下,我不想替换很多DOM元素。 所以,无论如何,我不想使用selectize.js之类的插件,也不想使用其他数据列表元素 有人帮忙吗 (function ($, window, document, undefined) { 'use strict'; var plugin

我想向以下增量搜索jQuery插件添加和搜索功能,该插件可以从选择框中搜索选项元素。 我正在尝试这些想法,但无法成功地编写代码。 -首先,我想将空白定义为分隔符。 -接下来,我想将该变量与选项元素中的其他空格区分开来

顺便说一下,我不想替换很多DOM元素。 所以,无论如何,我不想使用selectize.js之类的插件,也不想使用其他数据列表元素

有人帮忙吗

(function ($, window, document, undefined) {
'use strict';

var pluginName = "selectboxsearch",
    defaults = {
        delay: 100,
        bind: 'keyup',
    };

function Plugin(element, target, options) {
    this.element = element;
    this.$element = $(element);
    this.target = target;
    this.options = $.extend({}, defaults, options);
    this._defaults = defaults;
    this._name = pluginName;

    this.vars = {
        optionRows: $(this.target).children().map(function () {
            return this;
        })
    };

    this.init();
}

Plugin.prototype = {
    init: function () {
        var self = this,
            delay = this.options.delay;

        this.$element.on(this.options.bind, function () {
            var timeout = window.setTimeout(function () {
                self.go();
            }, delay);

        });
    },

    go: function () {
        var array = this.vars.optionRows,
            val = this.$element.val();
          //一周目のみ
        for (var n = 0; n < 1; n++) {
            // いったん削除
            $(this.target).children().remove();
            for (var i = 0, len = array.length; i < len; i++) {
                if (array[i]) {
               //option内のスペースを除去
                    var pos = array[i].innerHTML.toLowerCase().replace(/ /g,'').indexOf(val, 0);
                    // キーワードが空、もしくはヒットした場合要素追加
                    if ((val.replace(/ /g,'').length === 0) || pos >= 0) {
                        $(this.target).append(array[i]);
                    }
                }
            }
        }
    },

    additem: function (items) {
        var self = this,
            array = this.vars.optionRows,
            len = this.vars.optionRows.length;

        $.each(items, function (index, item) {
            var add = true;
            for (var i = 0, len; i < len; i++) {
                if (item.value == array[i].value) {
                    add = false;
                }
            }
            if (add == true) {
                array.push(item);
            }
        });

        this.vars.optionRows = array;
        self.go();
    },

    delitem: function (items) {
        var self = this,
            array = [];

        $.each(this.vars.optionRows, function (index, item) {
            var del = false;
            for (var i = 0, len = items.length; i < len; i++) {
                if (item.value == items[i].value) {
                    del = true;
                }
            }
            if (del == false) {
                array.push(item);
            }
        });

        this.vars.optionRows = array;
        self.go();
    }
};

$.fn[pluginName] = function (target, options) {
    return this.each(function () {
        if (!$.data(this, "plugin_" + pluginName)) {
            $.data(this, "plugin_" + pluginName, new Plugin($(this), target, options));
        }
    });
};
function _fnGetMaxLenString(settings, colIdx) {
var s, max = -1,
  maxIdx = -1;

for (var i = 0, ien = settings.aoData.length; i < ien; i++) {
  s = _fnGetCellData(settings, i, colIdx, 'display') + '';
  s = s.replace(__re_html_remove, '');
  s = s.replace('&nbsp;', ' ');

  if (s.length > max) {
    max = s.length;
    maxIdx = i;
  }
}

return maxIdx;
 }
     })(jQuery, window, document);
(函数($,窗口,文档,未定义){
"严格使用",;
var pluginName=“selectboxsearch”,
默认值={
延误:100,
绑定:'keyup',
};
功能插件(元素、目标、选项){
this.element=元素;
此.$element=$(element);
this.target=目标;
this.options=$.extend({},默认值,选项);
这是默认值;
这个。_name=pluginName;
此.vars={
optionRows:$(this.target).children().map(函数(){
归还这个;
})
};
this.init();
}
Plugin.prototype={
init:函数(){
var self=这个,
延迟=this.options.delay;
this.$element.on(this.options.bind,函数(){
var timeout=window.setTimeout(函数(){
self.go();
},延误);
});
},
go:函数(){
var数组=this.vars.optionRows,
val=this.$element.val();
//一周目のみ
对于(var n=0;n<1;n++){
// いったん削除
$(this.target).children().remove();
对于(变量i=0,len=array.length;i=0){
$(this.target).append(数组[i]);
}
}
}
}
},
附加项:功能(项目){
var self=这个,
数组=this.vars.optionRows,
len=this.vars.optionRows.length;
$。每个(项目、功能(索引、项目){
var add=true;
对于(变量i=0,len;i最大值){
最大=s.长度;
maxIdx=i;
}
}
返回maxIdx;
}
})(jQuery、窗口、文档);