[封装插件]实现多个下拉菜单select中的option移动操作
2018-02-09 14:29
507 查看
使用JS的写法:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #form1{ width: 80px; height: 150px; display:inline; } #form2{ width: 80px; height: 150px; display:inline; } #select1 { width: 80px; height: 150px; } #select2{ width: 80px; height: 150px; } </style> </head> <body> <form action="" id="form1"> <select name="" id="select1" size="7" multiple="multiple"> <option value="苹果">苹果</option> <option value="香蕉">香蕉</option> <option value="西瓜">西瓜</option> <option value="番茄">番茄</option> <option value="葡萄">葡萄</option> <option value="梨子">梨子</option> <option value="核桃">核桃</option> </select> </form> <button onclick="but()">>></button> <form action="" id="form2"> <select name="" id="select2" size="7"> </select> </form> <!--JS脚本--> <script> //获取form表单对象组 var forms = document.forms; //给button按钮赋值,一点击就调用以下方法 function but(){ //获取forms表单组内的第一个form对象 var form1 = forms[0].elements; //获取第一个form表单元素内的select对象 var select1 = form1[0]; //获取第一个select元素内的option选项组 var options1 =select1.options; //获取forms表单组内的第二个form对象 var form2 = forms[1].elements; //获取第二个form对象内的select对象 var select2 = form2[0]; //创建循环,判断如果选中就执行指定代码 for(var i = 0;i < options1.length ; i++){ //判断是否被选中 if(options1[i].selected){ //接着创建一个新的option标签对象 /* 创建option对象还有另外一种方法: var newopt = new Option(options[i].value,options[i].value) 这是使用Option底层类的方法来创建option对象,但是以后可能会被淘汰掉 建议使用document.createElement("标签名"),这种方法创建更方便记忆,更主流 */ var newopt = document.createElement("option"); //对这个对象的value和innerHTML赋值 newopt.value = options1[i].value; newopt.innerHTML = options1[i].value; //然后再把这个新创建的option对象add添加到第二个对象中去 select2.add(newopt); //把第一个select中的删除掉.写在这个作用域内会受到删除后的索引影响 // select1.remove(i); //非主流方法,删除选中的option.写在这个作用域内会受到删除后的索引影响 // options1[i].outerHTML = ""; } } /* 在第一个循环内删除option元素会导致两个问题 (1):如果要是把i当做删除索引来计算的话,每进行一次循环,就会删除一个元素或者多个,删除完后,循环的长度也就是原来数组的长度就会减少,那么执行删除的索引就会不够数 (2):如果把索引倒过来的话是可以解决options的长度问题,但是在存入数据的时候是倒过来存储的,也不能达到我们想要的效果,所以需要新建一个for循环,专门用于倒序号删除数据 */ for(var j = options1.length-1;i>=0;j--){ if(options1[j].selected){ select1.remove(j); } } } </script> </body> </html>
使用Jquery的写法:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Jquery设置移动两个form的内容</title><!--百度在线压缩地址--><script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script><style>form{display: inline;}select{width: 100px;height: 300px;}</style></head><body><!--我们想要让第一个被选择的元素移动到第二个表单中去--><form action="" id="form1"><select name="" id="select1" size="7" multiple="multiple"><option value="苹果">苹果</option><option value="香蕉">香蕉</option><option value="西瓜">西瓜</option><option value="番茄">番茄</option><option value="葡萄">葡萄</option><option value="梨子">梨子</option><option value="核桃">核桃</option></select></form><button id="bty">>></button><button id="btz"><<</button><button id="cpy">向右复制</button><button id="cpz">向左复制</button><form action="" id="form2" ><select name="" id="select2" size="7" multiple="multiple"></select></form><script>//把左边的选框内的数据移动到第二个选框内$("#bty").click(function(){$("#select1 option:selected").appendTo("#select2")});//把第二个选框内的数据移动到第一个选框内$("#btz").click(function(){$("#select2 option:selected").appendTo("#select1")});//把左边的选框内的数据复制到第二个选框内$("#cpy").click(function(){$("#select1 option:selected").clone().appendTo("#select2")});//把第二个选框内的数据复制到第一个选框内$("#cpz").click(function(){$("#select2 option:selected").clone().appendTo("#select1")});</script></body></html>
相比较而言,jquery实现起来更为简单,主要使用了选择 select下的option中的被选中的部分,appendTo移动函数,clone克隆函数
相关文章推荐
- 使用JQUERY的flexselect插件来实现将SELECT下拉菜单变成自动补全输入框
- 使用bootstrap-select插件来实现下拉菜单搜索匹配功能
- bootstrap select插件封装成Vue2.0组件
- 最简单js代码实现select二级联动下拉菜单
- iosSelect插件 H5中实现iOS的select下拉联动效果
- 实现select自动选择下拉菜单的值
- Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
- JS实现的Select三级下拉菜单代码
- 基于bootstrap-select插件,实现select下拉框模糊查询功能
- 用select下拉菜单来实现Ajax异步刷新
- 采用jquery的imgAreaSelect样品图像裁剪示范插件实现
- JS实现的Select三级下拉菜单代码
- jquery sumoselect 插件实现 select下拉 复选框
- DropKick自定义美化select下拉菜单jquery插件
- jQuery插件实现select下拉框左右选择_交换内容(multiselect2side) 的一些网站 (有时间整理)
- 利用jquery的imgAreaSelect插件实现图片裁剪示例
- select下拉菜单,无限加载切换菜单,实现自动加载子节点。
- JQ插件之imgAreaSelect实现对图片的在线截图功能(java版)
- 利用jquery的imgAreaSelect插件实现图片裁剪示例
- DOJO-dijit.form.FilteringSelect(扩展下拉菜单,封装了刷新函数)