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 相关文章推荐
JavaScript 事件查询综合
Jul 13 Javascript
改变隐藏的input中value的值代码
Dec 30 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
vue+axios新手实践实现登陆的示例代码
Jun 06 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 Javascript
vue数据响应式原理知识点总结
Feb 16 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
用文本作数据处理
2006/10/09 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
5种Python单例模式的实现方式
2016/01/14 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
用python写爬虫简单吗
2020/07/28 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
房产委托公证书
2014/04/08 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
公司表扬信格式
2015/05/04 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server