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 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 Javascript
js运动动画的八个知识点
Mar 12 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
值得收藏的vuejs安装教程
Nov 21 Javascript
解析vue路由异步组件和懒加载案例
Jun 08 Javascript
node之本地服务器图片上传的方法示例
Mar 26 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 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
第十四节 命名空间 [14]
2006/10/09 PHP
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
解析php中memcache的应用
2013/06/18 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
python实现封装得到virustotal扫描结果
2014/10/05 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python 常见的反爬虫策略
2020/09/27 Python
"序列点" 是什么
2016/07/29 面试题
计算机网络专业推荐信
2013/11/24 职场文书
先进事迹材料范文
2014/12/29 职场文书
诚信承诺书
2015/01/19 职场文书
旷课检讨书
2015/01/26 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang