select2插件 空格 分词 模糊匹配 模糊搜索

本文介绍如何使用Select2插件实现自定义匹配功能,通过JavaScript代码允许用户输入多个关键词进行选项匹配,并且这些关键词不需要按特定顺序排列。

效果:任意空格 加关键词 可匹配选项, 可以不按照顺序

< select id= "id" name = "id" class= "inline" style =" width: 360px ;" required >
        < c:forEach var= "wbclOrder" items =" ${fns:getWbclOrderLstByRq(wbclOrder.beginDate,wbclOrder.endDate)} ">
             < option value =" ${wbclOrder.id} "> [${wbclOrder.ylmc}].[${wbclOrder.ldlsh}].[${wbclOrder.hbcp}] </ option>
       </ c:forEach>
</ select>

在js区域ready下,写入


$( "#id").select2({
                     matcher: function (inputs, data) {
                            //console.log("inputs==="+inputs);
                            //console.log("data==="+data);
                           inputs=$.trim(inputs);
                            if (inputs.length == 0) return true ;
                           if((data.toUpperCase()).indexOf((inputs.toUpperCase()))>=1) return true ;
                            if(inputs.indexOf( " " )>0){
                                 var keywords=inputs.split( " " );
                                 for( var i = 0; i < keywords.length; i++){
                                      //console.log($.trim(keywords[i]));
                                      if((data.toUpperCase()).indexOf(($.trim(keywords[i]).toUpperCase()))==-1) return null ;
                                }
                                 return data;
                           }
                   }
 });


主要参看了select2文档和源码,全网百度不到相关解决方法,在stackflow上倒是有类似解决方法。

原理上还不是非常懂,特别是return null和return data,语法上也不是很优雅,请见谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值