jQuery Chosen通用初始化


Posted in Javascript onMarch 07, 2017

一直在用Chosen这个js插件,其目的就是美化下拉框。github地址:https://harvesthq.github.io/chosen/

no_results_text:"xxxxx"无搜索结果时显示的文本

allow_single_deselect:true 是否允许取消选择
disable_search: true 是否有搜索框出现

max_selected_options:当select为多选时,最多选择个数

官方说明文档地址

配置选项的官方说明文档地址

/* 功能: Chosen通用初始化
 * 创建人:Brian 创建时间:2016-12-13
 */
(function ($j) {
  var chosenTool = function (el, options) {
    this.opts = options;
    this.chosenInit();
    this.chose_get_init();
    this.chose_mult_set_init(this.opts.hidClassName);
    this.clickEvent();
    return this;
  }
  chosenTool.opts = {
    selectId: '',//selectId
    hidClassName: '',//隐藏域Class
    placeholdertxt: '',//select中placeholder文字
    noresulttxt: '',//输入的名称未查到时显示的文字
    dataJson: ''//数据源
  };
  $j.fn.myChosenTool = function (opt) {
    var value,
      args = Array.prototype.slice.call(arguments, 1);
    var $jthis = $j(this),
      data = $jthis.data('chosenTool'),
      options = $j.extend({}, chosenTool.opts, $jthis.data(),
        typeof option === 'object' && option);
    if (typeof option === 'string') {
      //判断用户调用的方法是否存在
      //if ($j.inArray(option, allowedMethods) < 0) {
      //  throw new Error("Unknown method: " + option);
      //}
      if (!data) {
        return;
      }
      value = data[option].apply(data, args);
      if (option === 'destroy') {
        $jthis.removeData('chosenTool');
      }
    }
    /*插件外部调用插件内部的方法需要修改成下面形式*/
    //if (typeof opt === 'string') {
    //  if (!data) {
    //    return;
    //  }
    //  value = data[opt].apply(data, args);
    //  if (opt === 'destroy') {
    //    $jthis.removeData('chosenTool');
    //  }
    //}
    if (!data) {
      opt["selectId"] = $j(this).attr("id");
      $jthis.data('chosenTool', (data = new chosenTool(this, opt)));
    }
    console.log(data);
    return typeof value === 'undefined' ? this : value;
  };
  chosenTool.prototype.clickEvent = function () {
    var _this = this;
    $j("#" + this.opts.selectId).on("change", function () {
      _this.chose_get_value();
    });
  };
  /*下拉框初始化方法*/
  chosenTool.prototype.selectInfoInit = function () {
    var proOPts = "";
    this.opts.dataJson = $j.parseJSON(this.opts.dataJson);
    $j.each(this.opts.dataJson, function (index, item) {
      proOPts += "<option value='" + item.ValueField + "'>" + item.TextField + "</option>";
    });
    $j("#" + this.opts.selectId).append(proOPts);
    //初始化chosen
    $j("#" + this.opts.selectId).chosen({
      allow_single_deselect: true, //是否允许取消选择
      placeholder_text_multiple: this.opts.placeholdertxt, //多选框没有选中任何值的时候 显示的文字
      no_results_text: this.opts.noresulttxt,//无搜索结果时显示的文本
      search_contains: true//是否支持模糊搜索
    });
  };
  /*对象初始化方法*/
  chosenTool.prototype.chosenInit = function () {
    this.selectInfoInit();
  };
  //私有方法,检测参数是否合法
  chosenTool.prototype.isValid = function () {
    return !this.options || (this.options && typeof this.options === "object") ? true : false;
  };
  //数据同步
  chosenTool.prototype.chose_get_init = function () {
    var selectId = this.opts.selectId;
    $j("#" + this.opts.selectId).chosen().change(
         function () {
           $j("#" + selectId).trigger("liszt:updated");//更新下拉框
         });
  };
  //单选select value获取
  chosenTool.prototype.chose_get_value = function () {
    var selectVal = $j("#" + this.opts.selectId).val();
    $j("." + this.opts.hidClassName).val(selectVal);
  };
  //单选select value获取
  chosenTool.prototype.chose_mult_set_init = function () {
    var values = $j("." + this.opts.hidClassName).val();
    if (values && values.indexOf(',') > 0) {
      var arr = values.split(',');
      var length = arr.length;
      var value = '';
      for (i = 0; i < length; i++) {
        value = arr[i];
        $j("#" + this.opts.selectId + " [value='" + value + "']").attr('selected', 'selected');
      }
    } else {
      $j("#" + this.opts.selectId + " [value='" + values + "']").attr('selected', 'selected');
    }
    $j("#" + this.opts.selectId).trigger("liszt:updated");
  };
  //select text获取,多选时请注意
  chosenTool.prototype.chose_get_text = function () {
    return $j("#" + this.opts.selectId + " option:selected").text();
  };
})(jQuery);

以上所述是小编给大家介绍的jQuery Chosen通用初始化,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery选择器 $实现原理
Dec 02 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
简单实用jquery版三级联动select示例
Jul 04 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
Feb 02 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
Angularjs为ng-click事件传递参数
Jun 15 Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
vue+element-ui+ajax实现一个表格的实例
Mar 09 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 #Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 #Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 #Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 #Javascript
JavaScript和JQuery获取DIV值的方法示例
Mar 07 #Javascript
AngularJS监听路由变化的方法
Mar 07 #Javascript
微信小程序开发之入门实例教程篇
Mar 07 #Javascript
You might like
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python发腾讯微博代码分享
2014/01/10 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python删除某个字符
2018/03/19 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
退休教师追悼词
2015/06/23 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
教师岗位说明书
2015/09/30 职场文书
Vue+Flask实现图片传输功能
2022/04/01 Vue.js