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 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
jQuery 创建Dom元素
May 07 Javascript
javascript getElementsByTagName
Jan 31 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
JS/Jquery判断对象为空的方法
Jun 11 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
JQuery入门基础小实例(1)
Sep 17 Javascript
Javascript对象字面量的理解
Jun 22 Javascript
Bootstrap实现登录校验表单(带验证码)
Jun 23 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
配置eslint规范项目代码风格
Mar 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php中处理模拟rewrite 效果
2006/12/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python模块之paramiko实例代码
2018/01/31 Python
python实现机器学习之元线性回归
2018/09/06 Python
python画双y轴图像的示例代码
2019/07/07 Python
python滑块验证码的破解实现
2019/11/10 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
秋季运动会表扬稿
2014/01/16 职场文书
运动会通讯稿300字
2014/02/02 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
酒店管理求职信
2014/06/09 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
基层党支部承诺书
2015/04/30 职场文书
公司职员入党自传书
2015/06/26 职场文书
小学体育组工作总结2015
2015/07/21 职场文书