JS实现带复选框的下拉菜单

这段时间在做后台的时候需要一个可以复选的下拉菜单,用到的是easyUI中的combo的Demo,先看看官方easyUI:http://www.jeasyui.com/documentation/index.php#

--------------------------------------------------------------------------------------------------------------------------------------------------------------

下面就来具体的实现:首先说一下需要的文件(直接上图):

其中最下面easyui.css和两个JS文件就在easyUI的官网(http://www.jeasyui.com/download/index.php)上下载,

官方文档的截图:

其他的代码附:

注意:

demo.css文件在下载的文件中有好几个,用的是themes下的default文件下的

 1 *{
 2     font-size:12px;
 3 }
 4 body {
 5     font-family:verdana,helvetica,arial,sans-serif;
 6     padding:20px;
 7     font-size:12px;
 8     margin:0;
 9 }
10 h2 {
11     font-size:18px;
12     font-weight:bold;
13     margin:0;
14     margin-bottom:15px;
15 }
16 .demo-info{
17     padding:0 0 12px 0;
18 }
19 .demo-tip{
20     display:none;
21 }

baseic.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Basic Combo - jQuery EasyUI Demo</title>
    <link rel="stylesheet" type="text/css" href="easyui.css">
    <link rel="stylesheet" type="text/css" href="demo.css">
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.easyui.min.js"></script>
</head>
<body>
    <select id="cc" style="width:150px"></select>
    <div id="sp">
        <div style="color:#99BBE8;background:#fafafa;padding:5px;">请选择渠道</div>
        <div style="padding:5px">
            <input type="checkbox" name="lang" value="01"><span>天天挖坑</span><br />
            <input type="checkbox" name="lang" value="02"><span>爱游戏</span><br />
            <input type="checkbox" name="lang" value="03"><span>沃商店</span><br />
            <input type="checkbox" name="lang" value="04"><span>咪咕</span>

        </div>
    </div>
    <script type="text/javascript">
        $(function () {
            var s = ",";//设定分隔付
            $(‘#cc‘).combo({
                required: true,//是否验证
                editable: true,//是否可编辑
                multiple: true//可否支持多选
            });
            $(‘#sp‘).appendTo($(‘#cc‘).combo(‘panel‘));
            $(‘#sp input‘).click(function () {
                var v = $(this).next(‘span‘).text();
                if ("," == s||""==s) {//第一次勾选时起作用
                    s = $(this).next(‘span‘).text();
                }
                else if (-1 < s.indexOf(v)) {//当去掉勾选时起作用  Indexof:返回某个指定的字符串值在字符串中首次出现的位置
                    var n = s.indexOf(v);
                    var m = s.indexOf(v) + v.length;
                    if (0 == s.indexOf(v)) {//取消第一个点击的勾选
                        s = s.substring(n + v.length + 1, s.length);
                    } else if (0 < s.indexOf(v) && ((s.indexOf(v) + v.length) < s.length)) {//取消非第一个和最后一个的勾选
                        s = s.substring(0, n) + s.substring(n + v.length + 1, s.length);
                    } else {//取消最后一个的勾选
                        s = s.substring(0, n - 1);
                    }
                }
                else {
                    s = s + "," + $(this).next(‘span‘).text();//将勾选各值拼接

                }
                $(‘#cc‘).combo(‘setValue‘, s).combo(‘setText‘, s).combo(‘showPanel‘);//将值赋值给文本框并在文本里显示出来
            });
        });
    </script>
</body>
</html>

看一下效果图:

-----------------------------------------------------------------------------------------------------------------------------------------------------------

附:下面这是方便提交表单向提交页提交的是各项的ID,而不是文本,需要的看一下:

 1 <td>
 2                                 <select id="cc" style="width:150px"></select>
 3                                 <div id="sp">
 4                                     <div style="color:#99BBE8;background:#fafafa;padding:5px;">请选择渠道</div>
 5                                     <div style="padding:5px">
 6                                         @{
 7                                             foreach (var item in ViewData["channelList"] as List<Channel>)
 8                                             {
 9                                                 int channel = item.ChannelID+1;
10                                                 <input type="checkbox" name="lang" value="@item.ChannelID"><span >@item.ChannelName</span><br />
11                                              }
12                                         }
13                                     </div>
14                                 </div>
15
16                                 <script type="text/javascript">
17                                     $(function () {
18                                         var s = ",";//设定分隔付
19                                         var channelID = ",";
20                                         $(‘#cc‘).combo({
21                                             required: true,//是否验证
22                                             editable: true,//是否可编辑
23                                             multiple: true//可否支持多选
24                                         });
25                                         $(‘#sp‘).appendTo($(‘#cc‘).combo(‘panel‘));
26                                         $(‘#sp input‘).click(function () {
27                                             var v = $(this).next(‘span‘).text();
28                                             var IDstr = $(this).val();
29                                             if ("," == s || "" == s) {//第一次勾选时起作用
30                                                 s = $(this).next(‘span‘).text();
31                                                 channelID = $(this).val();
32                                             }
33                                             else if (-1 < s.indexOf(v)) {//当去掉勾选时起作用  Indexof:返回某个指定的字符串值在字符串中首次出现的位置
34                                                 var n = s.indexOf(v);
35                                                 var m = s.indexOf(v) + v.length;
36                                                 var p = channelID.indexOf(IDstr);
37                                                 if (0 == s.indexOf(v)) {//取消第一个点击的勾选
38                                                     s = s.substring(n + v.length + 1, s.length);
39                                                     channelID = channelID.substring(n + IDstr.length + 1, channelID.length);
40                                                 } else if (0 < s.indexOf(v) && ((s.indexOf(v) + v.length) < s.length)) {//取消非第一个和最后一个的勾选
41                                                     s = s.substring(0, n) + s.substring(n + v.length + 1, s.length);
42                                                     channelID = channelID.substring(0, p) + channelID.substring(p + IDstr.length + 1, channelID.length);
43
44                                                 } else {//取消最后一个的勾选
45                                                     s = s.substring(0, n - 1);
46                                                     channelID = channelID.substring(0, p - 1);
47                                                 }
48                                             }
49                                             else {
50                                                 s = s + "," + $(this).next(‘span‘).text();//将勾选各渠道名称拼接
51                                                 channelID = channelID + "," + $(this).val();//将勾选各渠道ID拼接
52                                             }
53
54                                             $(‘#cc‘).combo(‘setValue‘, s).combo(‘setText‘, s).combo(‘showPanel‘);//将值赋值给文本框并在文本里显示出来
55                                             document.getElementById("hidden_channel").value = channelID;
56                                         });
57                                     });
58                                 </script>
59                                 <input id="hidden_channel" type="hidden" name="channel" />
60                             </td>

ok,完成,如果有问题或者优化建议联系QQ:836479387

时间: 2024-10-14 08:55:37

JS实现带复选框的下拉菜单的相关文章

带复选框的下拉框

效果图: . css: <style type="text/css"> /* 带复选框的下拉框 */ ul li{ list-style: none; padding:0px; margin: 0px; } .select_checkBox{ border:0px solid red; position: relative; display:inline-block; } .chartQuota{ height:23px; float:left; display:inlin

DOM(十)使用DOM设置单选按钮、复选框、下拉菜单

1.设置单选按钮 单选按钮在表单中即<input type="radio" />它是一组供用户选择的对象,但每次只能选一个.每一个都有checked属性,当一项选择为ture时,其它的都变为false. 先贴沙漠化一个例子: <script type="text/javascript"> function getChoice() { var oForm = document.forms["uForm1"]; var aCh

Easyui-combobox-checkbox-带复选框的下拉框

$.post("getSubInsuranceTypeList.do",{parent_id:node.id},function(result){                        if (result.length == 0){                            $("#sub-insurance").addClass("none");                        } else {       

vue.js实现单选框、复选框和下拉框

Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框 在传统的HTML中实现单选框的方法如下: <div id="app"> <input type="radio" name="gender" value="man" id="man"/><label

JS基础12-DOM访问列表框、下拉菜单的常用属性

一.DOM访问列表框.下拉菜单的常用属性如下: form 返回列表框.下拉菜单所在的表单对象 length 返回列表框.下拉菜单的选项个数 options 返回列表框.下拉菜单里所有选项组成的数组 selectedIndex 返回下拉列表中选中选项的索引 type 返回下拉列表的类型,多选的话返回select-multiple,单选返回select-one 二.使用options[index]返回具体选项所对应的常用属性: defaultSelected 返回该选项默认是否被选中 index 返

复选框、下拉框

使用单选框.复选框,让用户选择 语法: <input type="radio/checkbox" value="值" name="名称" checked="checked"/> 1.type: 当 type="radio" 时,控件为单选框 当 type="checkbox" 时,控件为复选框 2.value:提交数据到服务器的值(后台程序PHP使用) 3.name:为控件命

Selenium—选择框的相关操作(单选框、多选框、复选框、下拉框)

编辑框 无缺省值:第二个输入框 可直接对输入框进行编辑: driver.find_element_by_id('input2').send_keys('selenium') 有缺省值:第一个输入框,默认 test 此时,如果我们直接对第一个输入框进行编辑,会发现与预期结果不符 driver.find_element_by_id('input1').send_keys('selenium') 因此,如果需要对存在默认值的输入框进行编辑,则需先进行清楚操作,然后再进行编辑 driver.find_e

复选框和下拉框js如何操作合格复选框或下拉框中元素

<div style="width: 510px; border: 1px grey solid; border-right: 1px gray; padding-top: 1px;" id="heddendiv"> <div> <ul id="addressul" class="ul_s"> </ul> <div style="color: #ccc; posi

js获取checkbox复选框获取选中的选项

js获取checkbox复选框获取选中的选项 分享下javascript获取checkbox 复选框获取选中的选项的方法. 有关javascript 获取checkbox复选框的实例数不胜数.js实现: var form = document.getElementById("form2"); var field = form.elements["test2"]; var option = Dining.getSelectedOption(form, field);