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 相关文章推荐
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
javascript 伪数组实现方法
Oct 11 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
解决layer.confirm选择完之后消息框不消失的问题
Sep 16 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
Nov 12 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 Javascript
JavaScript中isPrototypeOf函数
Nov 07 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加密解密的代码
2007/07/16 PHP
深入解析php之apc
2013/05/15 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
如何对python的字典进行排序
2020/06/19 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
创业计划书怎样才能打动风投
2014/01/01 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
个人委托书范本
2014/09/13 职场文书
校园安全广播稿范文
2014/09/25 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang