浅谈select2的使用

前言

select2相比较以往的select下拉框比起来,确实非常方便,它提供了一个可自定义的选择框,支持搜索,标记,远程数据集,无限滚动以及许多其他高度使用的选项。

select2的安装详情请看官方文档介绍的配置方式:https://select2.org/getting-started/installation

支持的类型

传统的 <select> 框中包含任意数量的<option>元素。其中每个都在下拉菜单中呈现为一个选项。Select2在其上初始化时保留此行为<select>包含的元素 <option> 元素,将它们转换为内部JSON表示:

{
  "id": "value attribute" || "option text",
  "text": "label attribute" || "option text",
  "element": HTMLOptionElement
}

关于分层

每个HTML规范只允许一个级别的嵌套。如果你<optgroup> 在又建立一个 <optgroup>,Select2将无法检测到额外的嵌套级别,因此可能会触发错误。

此外, <optgroup>元素不能被选择。这是HTML规范的限制,并不是Select2可以克服的限制。

如果您希望创建可选选项的真实层次结构,请使用 <option> 而不是 <optgroup>使用CSS更改样式。请注意,这种方法可能被认为是“不太容易访问”,因为它依赖于CSS样式,而不是语义<optgroup>,以产生效果。

Select2数据格式

Select2可以从数组或远程数据源(AJAX)以编程方式提供的数据作为下拉选项。为了实现这一目标,Select2需要一种非常具体的数据格式。此格式由一个JSON对象组成,该对象包含由键控的对象数组result键。

{  
  "results": [
    {
      "id": 1,
      "text": "Option 1"
    },
    {
      "id": 2,
      "text": "Option 2",
      "selected": true
    },
    {
      "id": 3,
      "text": "Option 3",
      "disabled": true
    }
  ],
  "pagination": {
    "more": true       
  }
}

注:

  1. 如果您想使用“无限滚动”功能, //响应对象还可能包含分页数据。需要指定pagination键。
  2. 提供 selected 和 disabled此数据结构中的选项的属性   默认为不选中,true为选中

将数据转换为所需的格式

由于一般select数据可能会来源与后台,但Select2要求该id,text属性用于唯一标识结果列表中显示的选项。如果使用id(类似pk)以外的属性来唯一标识选项,则需要将旧属性映射到id,text将其传递给Select2之前。如果您无法在服务器上执行此操作,或者您处于无法更改API的情况,则可以在将其传递给Select2之前在JavaScript中执行此操作:

var data = $.map(yourArrayData, function (obj) {
  obj.id = obj.id || obj.pk; // replace pk with your identifier
  obj.text = obj.text || obj.name; // replace name with the property used for the text
  return obj;
});

注:不允许使用空格idid0

分组数据

{
  "results": [
    { 
      "text": "Group 1", 
      "children" : [
        {
            "id": 1,
            "text": "Option 1.1"
        },
        {
            "id": 2,
            "text": "Option 1.2"
        }
      ]
    },
    { 
      "text": "Group 2", 
      "children" : [
        {
            "id": 3,
            "text": "Option 2.1"
        },
        {
            "id": 4,
            "text": "Option 2.2"
        }
      ]
    }
  ],
  "pagination": {
    "more": true
  }
}

注:在创建嵌套选项时,仅支持单级嵌套。不保证在所有浏览器和设备上正确显示任何其他嵌套级别。

也可以加载数组数据

var data = [
    {
        id: 0,
        text: 'enhancement'
    },
    {
        id: 1,
        text: 'bug'
    },
    {
        id: 2,
        text: 'duplicate'
    },
    {
        id: 3,
        text: 'invalid'
    },
    {
        id: 4,
        text: 'wontfix'
    }
];

$(".js-example-data-array").select2({
  data: data
})
$(".js-example-data-array-selected").select2({
  data: data
})

选择后强制下拉列表保持打开状态

$('#mySelect2').select2({
  closeOnSelect: false
});

下拉列表

$('#mySelect2').select2({
  dropdownParent: $('#myModal')
});

 默认情况下,Select2会将下拉列表附加到正文的末尾,并将其绝对定位到选择容器的上方或下方。

 如果容器下方没有足够的空间,Select2将显示容器上方的下拉列表,但上面有足够的空间。

可清除的全部已选择的option

$('select').select2({
  placeholder: 'This is my placeholder',
  allowClear: true
});

设置true为时,如果选择了值,则会在选择框中显示清除按钮(“x”图标)。单击清除按钮将清除所选值,有效地将选择框重置回其占位符值。

自动标记到标签中

$(".js-example-tokenizer").select2({
    tags: true,
    tokenSeparators: [',', ' ']
})

Select2支持在用户键入搜索字段时自动添加选项的功能。尝试在下面的搜索字段中输入并输入空格或逗号。

单选选择占位符(无非就是默认值)

<select class="js-example-placeholder-single js-states form-control">
  <option></option>
</select>

默认尝试选择第一个选项。如果您的第一个选项非空,浏览器将显示此选项而不是占位符。

多选占位符

$('select').select2({
  placeholder: {
    id: '-1', // the value of the option
    text: 'Select an option'
  }
});

事件列表

当用户在select2上执行不同操作时,select2会触发不同的事件,用户能够监听这些事件,并且添加相应的处理。 
用户也可以通过.trigger来手动触发这些事件。

事件描述
change选择或删除选项时触发。
change.select2Scoped版本 change。请参阅下文了解更多详情。
select2:closing在下拉列表关闭之前触发。可以防止此事件。
select2:close每当下拉菜单关闭时触发。 select2:closing 在此之前被解雇并且可以被阻止。
select2:opening在下拉列表打开之前触发。可以防止此事件。
select2:open每次下拉打开时触发。 select2:opening 在此之前被解雇并且可以被阻止。
select2:selecting在选择结果之前触发。可以防止此事件。
select2:select选择结果时触发。 select2:selecting 在此之前被解雇并且可以被阻止。
select2:unselecting在删除选择之前触发。可以防止此事件。
select2:unselect删除选择时触发。 select2:unselecting 在此之前被解雇并且可以被阻止。
select2:clearing在清除所有选择之前触发。可以防止此事件。
select2:clear清除所有选择时触发。 select2:clearing 在此之前被解雇并且可以被阻止。

获取选中值

方法1:

$('#mySelect2').select2('data');
  •  

返回一个js对象数组,包括选中项的所有properties/values。

方法2:

$('#mySelect2').find(':selected');

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Select2是一种基于jQuery库的下拉选择框,可以帮助你更快捷、更方便地处理复杂的下拉列表。在这里,我们将提供一个简单的使用教程,帮助您快速上手Select2。 1. 下载和引用Select2 首先,您需要从官方网站下载Select2插件。下载完成后,在您的HTML页面中引用Select2的CSS和JS文件: ```html <link href="select2.min.css" rel="stylesheet" /> <script src="jquery.min.js"></script> <script src="select2.min.js"></script> ``` 2. 创建下拉框 在你的HTML文件中,你需要创建一个下拉框元素: ```html <select id="mySelect"></select> ``` 3. 初始化Select2 初始化Select2非常简单,只需在您的JavaScript文件中添加以下代码: ```javascript $(document).ready(function() { $('#mySelect').select2(); }); ``` 现在你的Select2下拉框已经准备好了!但是它还是空的,接下来我们将介绍如何使用Select2来添加选项。 4. 添加选项 添加选项非常简单,只需在下拉框中添加option元素即可。例如: ```html <select id="mySelect"> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> ``` 但是,如果您有大量的选项,手动添加它们会变得非常繁琐。在这种情况下,您可以使用Select2提供的AJAX加载选项的功能。我们将在下一步中介绍这个功能。 5. AJAX加载选项 使用AJAX加载选项,可以从服务器动态获取选项并将它们添加到Select2下拉框中。以下是一个简单的AJAX示例: ```javascript $(document).ready(function() { $('#mySelect').select2({ ajax: { url: 'http://example.com/api/options', dataType: 'json', processResults: function(data) { return { results: data }; } } }); }); ``` 在这个例子中,我们向Select2提供了一个AJAX请求的URL,并指定了响应数据的类型(JSON)。processResults函数用于处理服务器响应,并将结果返回给Select2。 6. 高级Select2 Select2插件还提供了许多高级功能,例如: - 主题 - 使用不同的主题来定制您的Select2下拉框 - 事件 - 使用事件来响应用户的行为,例如选中选项或打开下拉框 - 模板 - 使用模板来自定义选项的外观和行为 您可以在官方文档中了解更多关于这些高级功能的信息。 总结 在本教程中,我们介绍了如何使用Select2插件创建和自定义下拉框。我们介绍了如何添加选项,使用AJAX加载选项,并提供了一些高级功能的概述。希望这个教程能够帮助您更好地理解和使用Select2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值