Table des matières
一、组件说明以及API说明
二、组件特性效果展示
1、多选效果
2、图文结合的效果
3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)
三、代码示例
Maison interface Web tutoriel HTML JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose

JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose

Jun 21, 2016 am 09:00 AM

前言:在介绍select组件的时候,博主之前分享过一篇 JS组件系列——两种bootstrap multiselect组件大比拼 ,这两个组件的功能确实很强大,只可惜没有图文结合的效果(也就是将图片放入到select里面随着文字一起显示)。前两天做一个菜单图标选择的功能,就要用到这个图文选择的功能。于是乎又是找啊找。终于不负所望,找到了我们伟大的select2组件。今天分享下这个组件的一些用法和特性。

一、组件说明以及API说明

Select2使用示例地址: https://select2.github.io/examples.html

Select2参数文档说明: https://select2.github.io/options.html

Select2源码: https://github.com/select2/select2

二、组件特性效果展示

一些通用的单选、多选、分组等功能这里就不多做介绍了,multiselect这方面是强项。重点介绍下select2的一些特性效果:

1、多选效果

可以设置最多只能选几个

2、图文结合的效果

3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)

输入内容前

输入空格搜索出全部

滚动条滑动到底部自动加载剩余项

输入文本动态去后台过滤

更高级的用法如:

其实使用起来也不难,就是一个拼html的过程。

三、代码示例

1、多选效果

select2的多选很简单,设置一个属性就好了。

   <script src="~/Scripts/jquery-1.10.2.js"></script>    <script src="~/Content/bootstrap/js/bootstrap.js"></script>    <link href="~/Content/bootstrap/css/bootstrap.css" rel="stylesheet" />    <script src="~/Content/select2-master/dist/js/select2.js"></script>    <link href="~/Content/select2-master/dist/css/select2.css" rel="stylesheet" />
Copier après la connexion
  <select id="sel_menu2" multiple="multiple" class="form-control">         <optgroup label="系统设置">              <option value="1">用户管理</option>              <option value="2">角色管理</option>              <option value="3">部门管理</option>              <option value="4">菜单管理</option>         </optgroup>         <optgroup label="订单管理">              <option value="5">订单查询</option>              <option value="6">订单导入</option>              <option value="7">订单删除</option>              <option value="8">订单撤销</option>         </optgroup>         <optgroup label="基础数据">              <option value="9">基础数据维护</option>          </optgroup>     </select>
Copier après la connexion
    //多选    $("#sel_menu2").select2({        tags: true,        maximumSelectionLength: 3  //最多能够选择的个数    });
Copier après la connexion

2、图文结合的效果

<select id="sel_menu" class="js-example-templating js-states form-control">             <optgroup label="系统设置">                 <option value="1">用户管理</option>                 <option value="2">角色管理</option>                 <option value="3">部门管理</option>                 <option value="4">菜单管理</option>             </optgroup>             <optgroup label="订单管理">                 <option value="5">订单查询</option>                 <option value="6">订单导入</option>                 <option value="7">订单删除</option>                 <option value="8">订单撤销</option>             </optgroup>             <optgroup label="基础数据">                 <option value="9">基础数据维护</option>             </optgroup>         </select>
Copier après la connexion
$(function () {    //带图片    $("#sel_menu").select2({        templateResult: formatState,        templateSelection: formatState    });});function formatState(state) {    if (!state.id) { return state.text; }    var $state = $(      '<span><img  src="/content/images/' + state.element.value.toLowerCase() + '.ico" class="img-flag" / alt="JS组件系列--Bootstrap Select2组件使用小结_html/css_WEB-ITnose" > ' + state.text + '</span>'    );    return $state;};
Copier après la connexion

3、远程搜索功能(即在用户输入搜索内容时动态去后台取数据)

 <select id="sel_menu3" class="js-data-example-ajax form-control">      <option value="3620194" selected="selected">请选择</option> </select>
Copier après la connexion
$(function () {    //远程筛选    $("#sel_menu3").select2({        ajax: {            url: "/Home/GetProvinces",            dataType: 'json',            delay: 250,            data: function (params) {                return {                    q: params.term, // search term                    page: params.page                };            },            processResults: function (data, params) {                params.page = params.page || 1;                return {                    results: data.items,                    pagination: {                        more: (params.page * 10) < data.total_count                    }                };            },            cache: true        },        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work        minimumInputLength: 1,        templateResult: formatRepoProvince, // omitted for brevity, see the source of this page        templateSelection: formatRepoProvince // omitted for brevity, see the source of this page    });});
Copier après la connexion
function formatRepoProvince(repo) {    if (repo.loading) return repo.text;    var markup = "<div>"+repo.name+"</div>";    return markup;}
Copier après la connexion

这里有要注意的一个地方就是processResults属性对应的方法有一个more属性用于是否分页显示的,这里的值要和你需要一次显示的值的条数匹配。

后台对应的方法如下:

public List<string> lstProvince = new List<string>() {"北京市","天津市","重庆市","上海市","河北省","山西省","辽宁省","吉林省","黑龙江省","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","海南省","四川省","贵州省","云南省","陕西省","甘肃省","青海省","台湾省","内蒙古自治区","广西壮族自治区","西藏自治区","宁夏回族自治区","新疆维吾尔自治区","香港特别行政区","澳门特别行政区" };        public JsonResult GetProvinces(string q, string page)         {            var lstRes = new List<Province>();            for (var i = 0; i < 30; i++)            {                var oProvince = new Province();                oProvince.id = i;                oProvince.name = lstProvince[i];                lstRes.Add(oProvince);            }            if (!string.IsNullOrEmpty(q.Trim()))            {                lstRes = lstRes.Where(x => x.name.Contains(q)).ToList();            }            var lstCurPageRes = string.IsNullOrEmpty(page) ? lstRes.Take(10) : lstRes.Skip(Convert.ToInt32(page) * 10 - 10).Take(10);            return Json(new { items = lstCurPageRes, total_count = lstRes.Count }, JsonRequestBehavior.AllowGet);        }
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Mar 04, 2025 pm 12:32 PM

Le cache de mise à jour de la page Web du compte officiel, cette chose est simple et simple, et elle est suffisamment compliquée pour en boire un pot. Vous avez travaillé dur pour mettre à jour l'article officiel du compte, mais l'utilisateur a toujours ouvert l'ancienne version. Dans cet article, jetons un coup d'œil aux rebondissements derrière cela et comment résoudre ce problème gracieusement. Après l'avoir lu, vous pouvez facilement faire face à divers problèmes de mise en cache, permettant à vos utilisateurs de toujours ressentir le contenu le plus frais. Parlons d'abord des bases. Pour le dire franchement, afin d'améliorer la vitesse d'accès, le navigateur ou le serveur stocke des ressources statiques (telles que des images, CSS, JS) ou du contenu de la page. La prochaine fois que vous y accédez, vous pouvez le récupérer directement à partir du cache sans avoir à le télécharger à nouveau, et il est naturellement rapide. Mais cette chose est aussi une épée à double tranchant. La nouvelle version est en ligne,

Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Mar 17, 2025 pm 12:27 PM

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Mar 17, 2025 pm 12:20 PM

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Mar 04, 2025 pm 02:39 PM

Cet article démontre un ajout de bordure PNG efficace aux pages Web à l'aide de CSS. Il soutient que CSS offre des performances supérieures par rapport à JavaScript ou à des bibliothèques, détaillant comment ajuster la largeur, le style et la couleur des bordures pour un effet subtil ou proéminent

Quel est le but du & lt; datalist & gt; élément? Quel est le but du & lt; datalist & gt; élément? Mar 21, 2025 pm 12:33 PM

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

Quel est le but du & lt; mètre & gt; élément? Quel est le but du & lt; mètre & gt; élément? Mar 21, 2025 pm 12:35 PM

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Mar 12, 2025 pm 04:05 PM

Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit

Quel est le but du & lt; Progress & gt; élément? Quel est le but du & lt; Progress & gt; élément? Mar 21, 2025 pm 12:34 PM

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

See all articles