LAYUI好像不维护了啊啊啊,但是我觉得这个优化思路还是值得借鉴的,共勉。

  背景:LAYUI SELECT标签加上 lay-search属性就可以实现下拉的搜索功能,但是实际这个比较鸡肋,第二次搜索的时候搜索框内容不会置空,只有单一选项的时候还需要下拉选择上才能回车选中。

这边针对这两项进行优化。工具 idea 2019.3

  步骤:

    1、打开form.js,因为是有压缩的,所以可以使用ctrl+alt+L对代码进行格式化。没有用idea的小伙伴也可以找网页在线格式化就好,这样修改起来方便好多,也可以留下明显的修改记录。我的格式化后大致如图,可能会略有差异不影响。

    

layui ios 搜索框 问题 layui 下拉搜索_ide

 

  2、修改再次点到搜索框是内容清空的问题。其实封装的代码读起来还是有点困难的,所以需要结合前端调试。后续我找到大概在78行m的click方法里面,将框的内容置空就好了,这一块改起来还是比较简单的。大致的代码位置如图

layui ios 搜索框 问题 layui 下拉搜索_ide_02

 

 在这个方法里面加一条k.val('');即可。如图

layui ios 搜索框 问题 layui 下拉搜索_layui ios 搜索框 问题_03

 

 3、如果搜索后只有一个选项,默认该选项的优化。优化后操作体验有提升

修改的代码块在72行T方法里面,这个是输入搜索内容执行的方法。

layui ios 搜索框 问题 layui 下拉搜索_ide_04

 

 修改后的代码情况

layui ios 搜索框 问题 layui 下拉搜索_layui ios 搜索框 问题_05

 

 

  这一块的代码我贴一下。

layui ios 搜索框 问题 layui 下拉搜索_Code_06

layui ios 搜索框 问题 layui 下拉搜索_ide_07

T = function () {
                                /* modify begin          **/
                                /**
                                 * V.1.1优化  当搜索返回选项只有一条时,默认选择该项
                                 * 1、获取所有下拉项
                                 * 2、获取搜索后隐藏的下拉项(搜索过滤掉的)
                                 * 3、判断过滤后是否只有单一选项 if(ds.length == os.length + 1)
                                 * 4、之前有选择且搜索被剔除的选项,需将class有layui-this layui-hide 修改为layui-hide
                                 * 5、搜索返回的单一选项之前未被选择则class为空,将其class置未layui-this
                                 */
                                var ds = g.children('dd');
                                var os = g.children('dd.' + o);
                                if(ds.length == os.length + 1) {
                                    //  搜索选项只有一个的情况
                                    for(var iu = 0; iu < ds.length; iu ++) {
                                        var cn = ds[iu].className;
                                        if(cn.indexOf(o) > -1 && cn.indexOf(s) > -1) {
                                            //  搜索剔除且之前选择的
                                            ds[iu].className = o;
                                        } else if(cn.length == 0) {
                                            //  单一选项且之前未被选择
                                            ds[iu].className = s;

                                        }
                                    }
                                }
                                /* modify end          **/
                                var e = g.children("dd." + s);
                                if (e[0]) {
                                    var t = e.position().top, i = g.height(), a = e.height();
                                    t > i && g.scrollTop(t + g.scrollTop() - i + a - 5), t < 0 && g.scrollTop(t + g.scrollTop() - 5)
                                }
                            };

View Code

  这里我做个小小总结吧,各位小伙伴遇到任何问题都不要慌,慢慢来,仔细思考都能解决的,心不浮气不躁,我们能行的,在工作中不断提升自己,生活不也就是这样。

  行吧,也没有特别多的细节。如果再遇不到你,祝你早安,午安,晚安。