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