简体   繁体   English

如何添加和删除双列表框中的所有选项?

[英]how to add all and remove all options in dual list box?

How to add and remove all options using the dual list box?如何使用双列表框添加和删除所有选项?

We are using one small dual list box, we want to add options left side to right side box, now its work for single selected options moves to the right side but we also want all options to move to the right side even remove all options using button click.我们正在使用一个小的双列表框,我们想将选项从左侧添加到右侧框,现在它对单个选定选项的工作移动到右侧,但我们也希望所有选项移动到右侧甚至删除所有选项使用按钮点击。

and how to disable selected options, I mean restrict selected options?以及如何禁用选定的选项,我的意思是限制选定的选项?

Here is my FIDDLE这是我的小提琴

Here is the sample code:这是示例代码:

 $(document).ready(function() { $('#btnRight').click(function(e) { var selectedOpts = $('#lstBox1 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); //$(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnLeft').click(function(e) { var selectedOpts = $('#lstBox2 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } //$('#lstBox1').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); }); function updateIDs() { $('#values').val(''); $('#lstBox2 option').each(function(index) { console.log($(this).val()); $('#values').val($('#values').val() + $(this).val() + ","); }); }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <div class="col-sm-12"> <div class="col-xs-4"> Items to select <select id="lstBox1" style="width:40%" multiple="multiple" class="form-control" size=10> <option value="1">Test 1</option> <option value="2">Test 2</option> <option value="3">Test 3</option> </select> </div> <div class="col-xs-2" style="width:20%"> <a id="btnRight" class="btn btn-block btn-primary">Add</a> <a id="btnLeft" class="btn btn-block btn-primary">Remove</a> <a id="btnRightall" class="btn btn-block btn-primary">Add all</a> <a id="btnLeftall" class="btn btn-block btn-primary">Remove all</a> </div> <div class="col-xs-4" style="width:40%"> Selected Items <select id="lstBox2" multiple="multiple" class="form-control" size=10> </select> </div> </div> <input id="values" class="form-control" placeholder="Output IDs separated by commas here">

As far as i understand, you want to add all the items from list1 to list2.据我了解,您想将 list1 中的所有项目添加到 list2 中。

add this part of code添加这部分代码

$('#btnRightall').click(function(e){
 $('#lstBox1 option').prop('selected', true);
 var selectedOpts = $('#lstBox1 option').prop('selected', true);
 $('#lstBox2').append($(selectedOpts).clone());
 e.preventDefault();
 updateIDs();
});

Here is the working example of what I tried:这是我尝试过的工作示例:

 $(document).ready(function() { $('#btnRight').click(function(e) { var selectedOpts = $('#lstBox1 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); //$(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnLeft').click(function(e) { var selectedOpts = $('#lstBox2 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } //$('#lstBox1').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnRightall').click(function(e){ $('#lstBox1 option').prop('selected', true); var selectedOpts = $('#lstBox1 option').prop('selected', true); $('#lstBox2').append($(selectedOpts).clone()); e.preventDefault(); updateIDs(); }); $('#btnLeftall').click(function(){ var selectedOpts = $('#lstBox2 option').prop('selected', true); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); }); function updateIDs() { $('#values').val(''); $('#lstBox2 option').each(function(index) { console.log($(this).val()); $('#values').val($('#values').val() + $(this).val() + ","); }); }
 .col-lg-3 { border: 1px solid; }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <div class="col-sm-12"> <div class="col-xs-4"> Items to select <select id="lstBox1" style="width:40%" multiple="multiple" class="form-control" size=10> <option value="1">Test 1</option> <option value="2">Test 2</option> <option value="3">Test 3</option> </select> </div> <div class="col-xs-2" style="width:20%"> <a id="btnRight" class="btn btn-block btn-primary">Add</a> <a id="btnLeft" class="btn btn-block btn-primary">Remove</a> <a id="btnRightall" class="btn btn-block btn-primary">Add all</a> <a id="btnLeftall" class="btn btn-block btn-primary">Remove all</a> </div> <div class="col-xs-4" style="width:40%"> Selected Items <select id="lstBox2" multiple="multiple" class="form-control" size=10> </select> </div> </div> <input id="values" class="form-control" placeholder="Output IDs separated by commas here">

Please check this.请检查这个。 And use disabled for restrict selected options?并使用disabled来限制选定的选项?

 $(document).ready(function() { $('#btnRight').click(function(e) { var selectedOpts = $('#lstBox1 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } var compar = $('#lstBox2 option'); if($(selectedOpts).text() == $(compar).text()){ alert("Nothing to move."); } else{ $('#lstBox2').append($(selectedOpts).clone()); e.preventDefault(); updateIDs(); } }); $('#btnLeft').click(function(e) { var selectedOpts = $('#lstBox2 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } //$('#lstBox1').append($(selectedOpts)); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $("#btnRightall").click(function(e){ var selectedOpts = $('#lstBox1 option:not([disabled])'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); e.preventDefault(); updateIDs(); }); $("#btnLeftall").click(function(e){ var selectedOpts = $('#lstBox2 option'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }) }); function updateIDs() { $('#values').val(''); $('#lstBox2 option').each(function(index) { console.log($(this).val()); $('#values').val($('#values').val() + $(this).val() + ","); }); }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <div class="col-sm-12"> <div class="col-xs-4"> Items to select <select id="lstBox1" style="width:40%" multiple="multiple" class="form-control" size="10"> <option value="1" disabled>Test 1</option> <option value="2">Test 2</option> <option value="3">Test 3</option> </select> </div> <div class="col-xs-2" style="width:20%"> <a id="btnRight" class="btn btn-block btn-primary">Add</a> <a id="btnLeft" class="btn btn-block btn-primary">Remove</a> <a id="btnRightall" class="btn btn-block btn-primary">Add all</a> <a id="btnLeftall" class="btn btn-block btn-primary">Remove all</a> </div> <div class="col-xs-4" style="width:40%"> Selected Items <select id="lstBox2" multiple="multiple" class="form-control" size="10"> </select> </div> </div> <input id="values" class="form-control" placeholder="Output IDs separated by commas here">

I think you're looking for something like this:我想你正在寻找这样的东西:

 $(document).ready(function() { $('#btnRight').click(function(e) { var selectedOpts = $('#lstBox1 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnLeft').click(function(e) { var selectedOpts = $('#lstBox2 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox1').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $("#btnRightall").click(function(e) { var selectedOpts = $('#lstBox1 option:not([disabled])'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $("#btnLeftall").click(function(e) { var selectedOpts = $('#lstBox2 option:not([disabled])'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox1').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }) }); function updateIDs() { $('#values').val(''); $('#lstBox2 option').each(function(index) { console.log($(this).val()); $('#values').val($('#values').val() + $(this).val() + ","); }); }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <div class="col-sm-12"> <div class="col-xs-4"> Items to select <select id="lstBox1" style="width:40%" multiple="multiple" class="form-control" size=10> <option value="1">Test 1</option> <option value="2">Test 2</option> <option value="3">Test 3</option> </select> </div> <div class="col-xs-2" style="width:20%"> <a id="btnRight" class="btn btn-block btn-primary">Add</a> <a id="btnLeft" class="btn btn-block btn-primary">Remove</a> <a id="btnRightall" class="btn btn-block btn-primary">Add all</a> <a id="btnLeftall" class="btn btn-block btn-primary">Remove all</a> </div> <div class="col-xs-4" style="width:40%"> Selected Items <select id="lstBox2" multiple="multiple" class="form-control" size=10> </select> </div> </div> <input id="values" class="form-control" placeholder="Output IDs separated by commas here">

JsFiddle JsFiddle

Once you cloned the item to the other side .append($(selectedOpts).clone());将项目克隆到另一侧后.append($(selectedOpts).clone()); , you can simply remove them from the original container $(selectedOpts).remove(); ,您可以简单地将它们从原始容器中删除$(selectedOpts).remove(); . .

Hey try the below code and you can go through this fiddle too.嘿,试试下面的代码,你也可以通过这个小提琴

 $(document).ready(function() { $('#btnRight').click(function(e) { var selectedOpts = $('#lstBox1 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } $('#lstBox2').append($(selectedOpts).clone()); //$(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnRightall').click(function(e) { var selectedOptsAll = $('#lstBox1 option').prop('selected', true); $('#lstBox2').append($(selectedOptsAll).clone()); //$(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); $('#btnLeftall').click(function(e) { var selectedOptsRemoveAll = $('#lstBox2 option').prop('selected', true); $(selectedOptsRemoveAll).remove(); e.preventDefault(); updateIDs(); }); $('#btnLeft').click(function(e) { var selectedOpts = $('#lstBox2 option:selected'); if (selectedOpts.length == 0) { alert("Nothing to move."); e.preventDefault(); } //$('#lstBox1').append($(selectedOpts).clone()); $(selectedOpts).remove(); e.preventDefault(); updateIDs(); }); }); function updateIDs() { $('#values').val(''); $('#lstBox2 option').each(function(index) { console.log($(this).val()); $('#values').val($('#values').val() + $(this).val() + ","); }); }
 .col-lg-3 { border: 1px solid; }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <div class="col-sm-12"> <div class="col-xs-4"> Items to select <select id="lstBox1" style="width:40%" multiple="multiple" class="form-control" size=10> <option value="1">Test 1</option> <option value="2">Test 2</option> <option value="3">Test 3</option> </select> </div> <div class="col-xs-2" style="width:20%"> <a id="btnRight" class="btn btn-block btn-primary">Add</a> <a id="btnLeft" class="btn btn-block btn-primary">Remove</a> <a id="btnRightall" class="btn btn-block btn-primary">Add all</a> <a id="btnLeftall" class="btn btn-block btn-primary">Remove all</a> </div> <div class="col-xs-4" style="width:40%"> Selected Items <select id="lstBox2" multiple="multiple" class="form-control" size=10> </select> </div> </div> <input id="values" class="form-control" placeholder="Output IDs separated by commas here">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM