javascript 可多选的下拉框 multiselect 动态删除option值,动态添加option值,动态生成表格

首先引用一个写的很好的博客http://www.cnblogs.com/landeanfen/p/5013452.html

我使用的是bootstrap-multiselect,实现功能是

  1. 选择下拉框中的某几项数据后,通过点击add按键,可以将数据动态的添加到一个table中;
  2. 移除掉下拉框中的这几项;
  3. 删除table中的某行数据,对应的下拉框中会再添加这些值。

bootstrap-multiselect源码主页:https://github.com/davidstutz/bootstrap-multiselect

bootstrap-multiselect文档以及Demo:http://davidstutz.github.io/bootstrap-multiselect/

HTML Code

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="UTF-8">
 5     <link rel="stylesheet" href="/static/thirdpart/zui/css/zui.min.css">
 6     <link rel="stylesheet" href="/static/thirdpart/zui/css/zui-theme.css" />
 7     <link rel="stylesheet" href="/static/thirdpart/zui/lib/datatable/zui.datatable.min.css">
 8     <script src="/static/thirdpart/zui/lib/jquery/jquery.js"></script>
 9     <script src="/static/thirdpart/zui/js/zui.js"></script>
10     <script src="/static/thirdpart/zui/lib/datatable/zui.datatable.min.js"></script>
11     <script type="text/javascript" src="/static/thirdpart/bootstrap/js/bootstrap-multiselect.js"></script>
12     <link rel="stylesheet" href="/static/thirdpart/bootstrap/css/bootstrap-multiselect.css" type="text/css">
13     <link href="/static/thirdpart/bootstrap/css/multiple-select.css" rel="stylesheet">
14     <script src="/static/thirdpart/bootstrap/js/multiple-select.js"></script>
15 </head>
16
17 <body>
18 <div class="modal" id="assign_servers" style="display: block; position: static;">
19     <div class="modal-dialog " >
20         <div class="modal-content">
21             <div class="modal-header">
22                 <h4 class="modal-title">Assign Servers</h4>
23             </div>
24           <div class="modal-body" id="div1">
25                 <form class="form-horizontal" id=regular_application  >
26                       <div class="form-group" id="cloud_div" >
27                             <label class="col-xs-1"> Cloud</label>
28                             <div class="col-xs-3" id=‘cloud_ip_div‘>
29                                   <select   multiple="multiple"  class="form-control" id="cloud_server_ip" style="background-color:‘white‘;display:inline">
30                                     <option value="0">cloud_server0</option>
31                                     <option value="1">cloud_server1</option>
32                                     <option value="2">cloud_server2</option>
33                                     <option value="3">cloud_server3</option>
34                                     <option value="4">cloud_server4</option>
35                                     <option value="5">cloud_server5</option>
36                                 </select>
37                                 <script type="text/javascript">
38                                     $(document).ready(function() {
39                                         $(‘#cloud_server_ip‘).multiselect({
40                                             includeSelectAllOption: true,
41                                             buttonWidth: ‘130px‘,
42                                                 maxHeight: 150,
43                                             //enableFiltering: true
44                                         });
45                                     });
46                              </script>
47                          </div>
48                          <div  class="col-xs-1 ">
49                              <input type="button"  name="add_cloud_name" value="ADD" class="btn btn-primary" id="add_cloud_data" ><!--  ADD</input> -->
50                          </div>
51                         <label class="col-xs-2 "> Device</label>
52                           <div class="col-xs-3" id=‘device_ip_div‘>
53                               <select  multiple="multiple" class="form-control" name="device_server_ip" id="device_server_ip" style="background-color:‘white‘;display:inline">
54                                    <option value="0">device_server0</option>
55                                    <option value="1">device_server1</option>
56                                    <option value="2">device_server2</option>
57                                    <option value="3">device_server3</option>
58                                    <option value="4">device_server4</option>
59                                    <option value="5">device_server5</option>
60                             </select>
61                               <script type="text/javascript">
62                                 $(document).ready(function() {
63                                     $(‘#device_server_ip‘).multiselect({
64                                         includeSelectAllOption: true,
65                                         buttonWidth: ‘130px‘,
66                                             maxHeight: 150,
67                                         //enableFiltering: true
68                                     });
69                                 });
70                              </script>
71
72                         </div>
73                         <div  class="col-xs-1 ">
74                              <input type="button"  name="add_device_name" value=" ADD" class="btn btn-primary" id="add_device_data" > <!-- ADD</button> -->
75                         </div>
76                      </div>
77             </form>
78              <form id="server_form" method = ‘post‘ >
79                  <div id=‘table_server‘style="overflow-y: auto; height: 300px;">
80                     <table  class="table table-hover "  id="server_table"  style="margin-top:10px">
81                         <thead>
82                                 <tr>
83                                     <th scope="col" >Server Type</th>
84                                 <th scope="col" >Host Name</th>
85                                 <th scope="col" >Operation</th>
86                              </tr>
87                         </thead>
88                         <tbody>
89                         </tbody>
90                     </table>
91                 </div>
92                </form>
93            </div>
94         </div>
95    </div>
96 </div>
97 </body>
98 </html>    

Javascript Code

 1 <script>
 2 //add server data
 3 $(function(){
 4    ??$(‘#add_cloud_data‘).click(function(){
 5        if ($(‘#cloud_server_ip‘).val()){
 6                add_servers(‘Cloud‘,‘cloud_server_ip‘);
 7             $(".table_data").css("background-color","#f2f2f2");
 8             $(".table_data").css("border","0");
 9             $(".table_data").mouseover(function(){
10             $(".table_data").css("background-color","#eceff1");});
11             $(".table_data").mouseout(function(){
12             $(".table_data").css("background-color","#f2f2f2");});
13        }
14        });
15 });
16
17 $(function(){
18    ??$(‘#add_device_data‘).click(function(){
19        if ($(‘#device_server_ip‘).val()){
20            add_servers(‘Device‘,‘device_server_ip‘);
21             $(".table_data").css("background-color","#f2f2f2");
22             $(".table_data").css("border","0");
23             $(".table_data").mouseover(function(){
24             $(".table_data").css("background-color","#eceff1");});
25             $(".table_data").mouseout(function(){
26             $(".table_data").css("background-color","#f2f2f2");});
27        }
28       });
29 });
30
31 function add_servers(server_type,server_ip){
32     len=$(‘#‘+server_ip).val().length
33     for(var i=0;i<len;i++){
34         var server_value=$(‘#‘+server_ip).val()[0]
35         var server_text=$(‘#‘+server_ip).find("option:selected")[0].innerHTML
36         add_single_server(server_type,server_ip,server_value,server_text);
37        $(‘option[value="‘+server_value+‘"]‘, $(‘#‘+server_ip)).remove();
38         }
39     $(‘#‘+server_ip).multiselect(‘rebuild‘);
40 }
41
42 function add_single_server(server_type,server_ip,server_value,server_text){
43     var tr = document.createElement("tr");
44     tr.setAttribute(‘class‘,‘table_data‘);
45
46     //servertype    input
47     var servertypeVal = server_type;
48     var servertypeTd = document.createElement("td");
49     tr.appendChild(servertypeTd);
50     var input_box = document.createElement(‘input‘);
51     input_box.setAttribute(‘value‘,servertypeVal);
52     input_box.setAttribute(‘name‘,"table_servertype");
53     input_box.setAttribute(‘style‘,‘width:70px‘);
54     input_box.setAttribute(‘type‘,‘text‘);
55     input_box.setAttribute(‘readonly‘,‘readonly‘);
56     input_box.setAttribute(‘class‘,‘table_data‘);
57     servertypeTd.appendChild(input_box);
58
59     //serverip    input
60     var serveripVal =server_text;
61     var serverip_id=server_value;
62     var serveripTd = document.createElement("td");
63     tr.appendChild(serveripTd);
64     var input_box = document.createElement(‘input‘);
65     input_box.setAttribute(‘value‘,serveripVal);
66     input_box.setAttribute(‘title‘,serverip_id);
67     input_box.setAttribute(‘id‘,"table_hostname");
68     input_box.setAttribute(‘name‘,"table_hostname");
69     input_box.setAttribute(‘style‘,‘width:300px‘);
70     input_box.setAttribute(‘type‘,‘text‘);
71     input_box.setAttribute(‘readonly‘,‘readonly‘);
72     input_box.setAttribute(‘class‘,‘table_data‘);
73     serveripTd.appendChild(input_box);
74
75      // delete operate
76      var delTd = document.createElement(‘td‘);
77      tr.appendChild(delTd);
78      var btnDel = document.createElement(‘input‘);
79      btnDel.setAttribute(‘type‘,‘button‘);
80      btnDel.setAttribute(‘value‘,‘Delete‘);
81      btnDel.onclick=function(){
82          if(confirm("Do you want to delete this line?")){
83            //btnDel - td - tr - tbody . removeChild(tr)
84                $("#"+server_ip).append("<option value="+serverip_id+">"+serveripVal+"</option>");
85                this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);
86                $(‘#‘+server_ip).multiselect(‘rebuild‘);
87          }
88      }
89      delTd.appendChild(btnDel);
90
91      document.getElementById("server_table")
92          .getElementsByTagName("tbody")[0]
93          .appendChild(tr);
94 }
95 </script>
时间: 2024-10-29 19:10:29

javascript 可多选的下拉框 multiselect 动态删除option值,动态添加option值,动态生成表格的相关文章

获取多选下拉框(select标签设置multiple属性)的值

原文链接:https://blog.csdn.net/qq846294282/article/details/82427002   (侵删) <select multiple>不能直接获取value,需要借助该元素的options属性.如下: <select id="select" multiple> <option value="1">1111</option> <option value="2&qu

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

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

基于element-ui的多选下拉框和tag标签的二次封装

前言: 今年这大半年我主要负责公司的后台教务管理的开发,这个管理系统目前主要是给公司的内部人员去配置公司的核心项目(例如:熊猫小课)的所有数据,例如课程的配置.课程期数的配置.课程版本的配置.活动的配置.课程安排表.管理员的权限配置.物流的管理.退款管理.学员咨询管理等功能.因为一开始这个教务系统的原型设计就是基于element-ui 1.4.13的版本设计的,前端一开始为了和设计稿给的原型保持一致,项目中也是基于element-ui 1.4.13在开发,现在这个版本官方已经停止维护了,我们曾经

jquery操作select下拉框的多种方法(选中,取值,赋值等)

jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发2. var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text3. var checkValue=$("#select

JQuery操作下拉框

转载自下面的链接,很有用的. http://www.cnblogs.com/yrhua/archive/2012/11/04/2753571.html 要实现这种效果: HTML代码 <script src="js/jquery-1.7.2.min.js"></script> <table> <tr> <td> <!--multiple设定下拉框可以多选,size设定下拉框不呈现下拉方式,--> <selec

jquery操作select下拉框的多种方法(选中,取值,赋值等) 转载

jQuery获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发 2. var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text 3. var checkValue=$("#se

自己编写jQuery插件 之 无限级联下拉框

因为是级联,所以数据必须是树型结构的,我这里的测试数据如下: 看下效果图: 1.>图一: 2.>图二: 3.>图三: 由图可知,下拉框的个数并不是写死的,而是动态加载的.每当下拉框选择改变的时候,会发送一次ajax请求,请求成功返回json格式数据,当返回的数据不为空时(即有子节点时),则会向页面中添加一个下拉框,没有则不添加. 插件的实现代码如下: (function ($) { $.fn.CascadingSelect = function (options) { //默认参数设置

JS/JQuery操作select下拉框

一.js 操作select 下拉框 var selObj = 下拉框对象 1. 移除所有项:selObj.options.length = 0; 2. 移除下拉框中的一项:selObj.options.remove(index); “index”为下拉框选项的索引值,若0索引项移出(自上而下),那么1索引项的索引会变为0,后面的索引依次向前推进 也可利用循环,移除所有项: var length = selObj.options.length; for(var i=length-1;i>=0;i-

用JS和C#分别在前端和后端控制下拉框为只读的方法的代码

代码期间,将写代码过程较好的代码段备份一次,下面资料是关于用JS和C#分别在前端和后端控制下拉框为只读的方法的代码,应该对各位朋友有较大用途. <HTML> <HEAD> <TITLE>下拉框模拟只读</TITLE> <script type="text/javascript"> function setReadOnly(obj_id){ var obj = document.getElementById(obj_id); o