select2.js 取值 遍历 设置默认值

本文介绍如何使用Select2插件美化下拉框,包括单选与多选下拉框的初始化、设置默认值及获取选中值的方法。Select2支持搜索功能并能改善用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章内容主要介绍Select2 的初始化,获取选中值,设置默认值,三个方法。Select2 美化了单选框,复选框和下拉框,特别是下拉框多选的问题。但同时,Select2也有很多吭(单选下拉框有明显的搜索输入框,而多选下拉框没有,但实际也支持多选。直接在input框输入即可)。

效果图:
这里写图片描述

需求:使用Select2实现下拉框多选,并获取选中值,初始设置默认值

技术:select2.js ,prototype.js,jquery.js

说明:select2是jquery插件,取值和设置默认值都可以用jquery单独完成。为什么用prototype.js ?因为在公司用prototype.js 写的,笔者因为各种原因,没有用jquery重写(原谅我比较懒)。还有一点值得注意:获取的文本值可能有空格哦!!!笔者就是被吭了一脸!

一切尽在代码中:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>select2实例</title>
<<link rel="stylesheet" href="bootstrap/3.3.0/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="select2-4.0.0/dist/css/select2.min.css" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/css/select2.min.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="select2-4.0.0/dist/js/select2.min.js"></script>

</head>
<body>
    <label class="control-label col-sm-1">个性标签(checkbox): </label>
    <div class="col-sm-3">
        <select class="select_gallery-multiple" multiple="multiple" style="width:100%;" onchange="getSelectData()" id="mul-itdragon">
            <optgroup label="这样真的好么?">
                <option value="0">打野</option>
                <option value="01">上单</option>
                <option value="02">中单</option>
                <option value="03">送人头</option>
            </optgroup>
            <optgroup label="职位">
                <option value="1">土豪</option>
                <option value="2">屌丝</option>
                <option value="3">单身dog</option>
                <option value="4">苹果粉</option>
                <option value="5">苦逼程序员</option>
            </optgroup>
        </select>
    </div>
    <label class="control-label col-sm-1">个性标签(radio): </label>
    <div class="col-sm-3">
        <select class="select_gallery" style="width:100%;" id="itdragon">
            <optgroup label="这样真的好么?">
                <option value="0">打野</option>
                <option value="01">上单</option>
                <option value="02">中单</option>
                <option value="03">送人头</option>
            </optgroup>
            <optgroup label="职位">
                <option value="1">土豪</option>
                <option value="2">屌丝</option>
                <option value="3">单身dog</option>
                <option value="4">苹果粉</option>
                <option value="5">苦逼程序员</option>
            </optgroup>
        </select>
    </div>
    <script type="text/javascript">
        var $jq = jQuery.noConflict();

        // 初始化多选select2
        $jq(".select_gallery-multiple").select2();

        // 初始化单选select2
        $jq(".select_gallery").select2();

        // 默认选择
        select2ByText ("mul-itdragon", "苦逼程序员");
        select2ByValue ("itdragon", "03");

        // 通过id获取select2的value值
        function getSelect2Value(obj) {
            var select2Obj = $jq('#'+obj).select2();
            return select2Obj.select2("val");
        }

        // 通过id获取select2的text值,这里的text值可能有空格,需注意
        function getSelect2Text(obj) {
            var select2Obj = $jq('#'+obj).select2();
            return select2Obj.find("option:selected").text();
        }

        // 通过text 设置select2的默认值
        function select2ByText (obj, text) {
            var select2Obj = $jq('#'+obj).select2();
            $(obj).select("option").each(function(data){
                if (text == data.text.strip()) {
                    select2Obj.val(data.value).trigger("change");
                }
            });
        }

        // 通过value 设置select2的默认值
        function select2ByValue (obj, value) {
            var select2Obj = $jq('#'+obj).select2();
            select2Obj.val(value).trigger("change");
        }

        function getSelectData(){
            console.log(getSelect2Value("mul-itdragon"));
            console.log(getSelect2Text("itdragon"));
            var mulItdragonVal = $jq("#mul-itdragon").select2("val");
            if (null == mulItdragonVal) {
                console.log("Over !");
                return ;
            }
            console.log(mulItdragonVal);
            var mulItdragonData = $jq("#mul-itdragon").select2('data');
            mulItdragonData.each(function(data){
                console.log("value : ", data.id);
                console.log("text : ", data.text);
            });

        }
    </script>
</body>
</html>
一、数据操作 1.增加数据 1)增加一行数据——增加全部值 insert into 表名 values(…); 注意: a)数据值需要和表的字段完全对应(数据个数和数据类型) b)主键列是自动增长,插入时需要占位,通常使用0或者default或者null来占位 举例: insert into students values(0,'张三',28,1.78); 2)增加一行数据——增加部分值 insert into 表名(字段1,…) values(值1,…); 举例: insert into students values(0,'张三',28,1.78); insert into students(name,height) values('李四',1.68); 3)增加多行数据 a)方法一:多句执行单行插入语句,以分号隔开 举例: insert into students values(0,'王五',23,1.67); insert into students(name,height) values ('赵六',1.82); b)方法二:在插入单行数据的语句上,value后边的数据进行多组化处理 insert into 表名 vaues(…),(…); insert into 表名(列1,…)values(值1,…),(值1,…)…; 举例: insert into students values(0,'张一',21,1.81),(1,'张二',30,1.65); insert into students(name,height) values('李三',1.54),(李四'',1.87); 2.修改数据 1)修改数据 update 表名 set 列1=值1,列2=值2… where 条件; 注意:where如果省略,代表修改整列数据,不建议省略where 举例:update students set age=48 where id=9; 3.删除数据 1)删除数据 delete from 表名 where 条件; 注意:where如果省略,代表删除全部数据,不建议省略where 举例:delete from students where id=6; 2)逻辑删除 对于重要的数据,不能轻易执行delete删除语句,因为一旦删除,数据无法回复,这时会用到逻辑删除。表中增加字段isdelete,0代表未删除,1代表删除,默认值0,当需要删除某条数据时,设置该条数据的isdelete字段为1 举例: update students set isdelete=1 where id=4; select *from students where isdelete=0; 3)其他删除方法 delete from 表名 ——删除所有数据,但是不重置主键字段的计数 truncate table 表名 ——删除所有数据,并重置主键字段的计数 drop table 表名 ——删掉表(字段和数据均不再存在) 举例: delete from students; truncate table students; drop table students; 4.查询语句 1)基本查询 a)查询表内所有数据 select *from 表名; 举例:select *from students; b)查询表内部分字段 select 字段名1,字段名2 from 表名; 举例:select name,age from students; c)字段起别名查询 select 字段名 as '别名' from 表名; (引号可以省略,as也可以省略) select name as '姓名' from students; 起别名的作用:1)美化数据结果的显示效果 2)可以起到隐藏真正字段名的作用 d)去重查询 select distinct(字段名) from 表名; 举例:select distinct(company) from goods; 2)条件查询 a)逻辑运算符 select *from goods where price >30 and company != ''PDD; b)模糊查询 like % 举例: select *from goods where remark like '%一次性%'; ——关键词在中间 select *from goods where remark like '%一次性'; ——关键词在末尾 selects *from goods where remark like '一次性%'; ——关键词在开头 c)范围查询 查询价格范围在30-100的商品信息 举例:select *from goods where price between 30 and 100; d)判断空查询 i)查询描述为空的所有商品 select *from goods where remark is null; ii)查询有描述信息的所有商品 select *from goods where remark is not null; 3)其他复杂查询 a)排序 查询说明:查询所有商品信息,按照价格从大到小排序,价格相同时,按照数量由少到多排序 select *from 表名 order by 列1 asc|desc ,列2 asc|desc,… 说明:order by ——排序;asc ——升序 ;desc ——降序 select *from goods order by price desc,count asc; 默认排序为升序,上面的asc可以省略,修改为:select *from goods order by price desc,count; b)聚合函数 i)统计记录总数 select count(*) from goods; 扩展:可以增加筛选条件,如:select count(*) from goods where name = '矿泉水'; ii)其他 select max(price) from goods; ——最高商品价格 select min(price) from goods; ——最低商品价格 select avg(price) from goods; ——商品平均价格 select sum(amount) from goods where remark like '%一次性%'; ——一次性商品的总金额 c)分组 i)分组查询 select 字段1,字段2,聚合… from 表名 group by 字段1,字段2select sum(amount) from goods group by company; ——按照公司名称分组统计各个公司的金额总数 还可以分组统计数量:select count(*) from goods group by company; ii)分组后加条件过滤 select 字段1,字段2,聚合… from 表名 where 条件 group by 字段 having 条件; 举例:显示每个地区的总人口数和总面积,仅显示那些面积超过1000000的地区 select region,sum(population),sum(area) from bbc group by region having sum(area)>1000000; where 和having的区别 where是对from后面指定的表进行数据筛选,属于对原始数据的筛选 having是对group by 的结果进行筛选 having后面的条件中可以用聚合函数,where后面不可以 4)分页查询 select *from 表名 limit start,count; 举例: select *from goods limit 0,5; ——获取前5条数据 select *from goods limit 5; ——默认从一条取值,0可以省略 扩展: select *from goods order by price desc limit 1; ——查询商品价格最贵的一条数据信息 select *from goods order by price desc limit 3; ——查询商品价格最贵的前三条数据信息 5.连接查询 1)内连接 select *from 表1 inner join 表2 on 表1.列=表2.列 内连接查询,按照图表表示如下:取的值是A和B的交集,也就是A和B都有的数据才能查出来 A表和B表结构如下: select *from A inner join B on A.id=B.id; 还可以写成:select *from A join B on A.id=B.id; 或者select *from A , B where A.id=B.id; 取出来的数据是id为1,2,3 2)左连接(左外连接) select *from 表1 left join 表2 on 表1.列=表2.列 左连接查询,按照图表表示如下:取的值是A的全部加上A和B的交集部分 select *from A left join B on A.id=B.id; 还可以写成:select *from A left outer join B on A.id=B.id; 取出来的数据是id为1,2,3,4 3)右连接(右外连接) select *from 表1 right join 表2 on 表1.列=表2.列 右连接查询,按照图表表示如下:取的值是B的全部加上A和B的交集部分 select *from A right join B on A.id=B.id; 还可以写成:select *from A right outer join B on A.id=B.id; 取出来的数据是id为1,2,3 4)全连接 取的是A和B两个表的全部 select *from A left join B on A.id=B.id union select *from A right join B on A.id=B.id; 或者select *from A full join B on A.id=B.id; 6.子查询语句充当查询条件或数据源 1)子查询语句充当查询条件 select *from goods where price > (select avg(price)from goods); ——查询价格高于平均价的商品信息 2)子查询语句充当数据源 select *from (select *from goods go left join category ca on go.typeid=ca.typeid) new where new.company = ''PDD; ——查询所有来自PDD的商品信息,包含商品分类 其中,goods 别名go category别名ca 二、数据类型和约束 1.数据类型 1)整数: int 有符号范围(-2147483648 ~2147483647),⽆符号 (unsigned)范围(0 ~ 4294967295) 2)⼩数: decimal 例如:decimal(5,2) 表示共存5位数,⼩数占2位,整数占3 位 3)字符串: varchar 范围(0~65533),例如:varchar(3) 表示最多存3个字 符,⼀个中⽂或⼀个字 ⺟都占⼀个字符 4)⽇期时间: datetime 范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),例如:'2020-0101 12:29:59' 2.约束 1)主键(primary key) 能唯⼀标识表中的每⼀条记录的属性组 2)⾮空(not null) 此字段不允许填写空值 3)唯⼀(unique) 此字段的值不允许重复 4)默认值(default) 当不填写此值时会使⽤默认值,如果填写时以填写为准 5) 外键(foreign key) ⼀个表中的⼀个字段引⽤另⼀个表的主键 说明: 通过外部数据表的字段, 来控制当前数据表的数据内容变更, 以避免单⽅⾯移除数据, 导致关联表数据产⽣垃圾数据的⼀种⽅法。 注意: 如果⼤量增加外键设置, 会严重影响除数据查询操作以外的其他操作(增/ 删/改)的操作效率。 6)索引 说明: 为字段添加索引,可以⼤幅度提⾼查询语句的执⾏效率。 注意: 如果⼤量增加索引设置, 会严重影响除数据查询操作以外的其他操作(增/ 删/改)的操作效率, 故不⽅便过多添加。 ———————————————— 将内容变为面试题格式 生成一个word 一问一答
最新发布
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值