LAYUI SELECT下拉搜索優化


  LAYUI好像不維護了啊啊啊,但是我覺得這個優化思路還是值得借鑒的,共勉。

  背景:LAYUI SELECT標簽加上 lay-search屬性就可以實現下拉的搜索功能,但是實際這個比較雞肋,第二次搜索的時候搜索框內容不會置空,只有單一選項的時候還需要下拉選擇上才能回車選中。

這邊針對這兩項進行優化。工具 idea 2019.3

  步驟:

    1、打開form.js,因為是有壓縮的,所以可以使用ctrl+alt+L對代碼進行格式化。沒有用idea的小伙伴也可以找網頁在線格式化就好,這樣修改起來方便好多,也可以留下明顯的修改記錄。我的格式化后大致如圖,可能會略有差異不影響。

    

 

  2、修改再次點到搜索框是內容清空的問題。其實封裝的代碼讀起來還是有點困難的,所以需要結合前端調試。后續我找到大概在78行m的click方法里面,將框的內容置空就好了,這一塊改起來還是比較簡單的。大致的代碼位置如圖

 

 在這個方法里面加一條k.val('');即可。如圖

 

 3、如果搜索后只有一個選項,默認該選項的優化。優化后操作體驗有提升

修改的代碼塊在72行T方法里面,這個是輸入搜索內容執行的方法。

 

 修改后的代碼情況

 

 

  這一塊的代碼我貼一下。

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

  這里我做個小小總結吧,各位小伙伴遇到任何問題都不要慌,慢慢來,仔細思考都能解決的,心不浮氣不躁,我們能行的,在工作中不斷提升自己,生活不也就是這樣。

  行吧,也沒有特別多的細節。如果再遇不到你,祝你早安,午安,晚安。

  若想與我談些人生大事請評論或郵件ztangbin@163.com ,等你哈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM