jquery插件select之chosen选中去掉空格解决方法

笔者公司开发前端页面,用到chosen插件,使用效果如图:


插件带有搜索功能,用起来非常方便。

由于列表是树形结构,所以在加载数据时,子节点都加了空格,来展现树形结构,那么问题来了,在选中一个子节点后,文本区会带有空格,如图:


这样看上去体验就很差了,但是怎么去掉空格呢,想了很多办法都没奏效,没办法只能读取源码(chosen.jquery.js)了。

打了许多log日志之后,找到了这个方法 Chosen.prototype.single_set_selected_text。没错就是它负责,源码如下:

       Chosen.prototype.single_set_selected_text = function (text) {
            if (text == null) {
                text = this.default_text;
            }
            if (text === this.default_text) {
                this.selected_item.addClass("chosen-default");
            } else {
                this.single_deselect_control_build();
                this.selected_item.removeClass("chosen-default");
            }
            return this.selected_item.find("span").text(text);
        };
我们看到方法传进参数text,text就是我们选中的文本,接下来我们就对这个文本去掉空格即可。在源码里增加一行代码如下:
       Chosen.prototype.single_set_selected_text = function (text) {
            console.log("68");
            if (text == null) {
                text = this.default_text;
            }
            if (text === this.default_text) {
                this.selected_item.addClass("chosen-default");
            } else {
        /*
              注意!!!!!!!!!!!:这是在源码基础上增加的一句话,为了去掉选中后的空格。  
        */
                text=text.trim();

                this.single_deselect_control_build();
                this.selected_item.removeClass("chosen-default");
            }
            return this.selected_item.find("span").text(text);
        };
就此,问题解决。

扩展,我们如果想对选中的option做处理,可以在此方法中加入相应代码。

本文只做抛砖引玉。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值