[英]Remove duplicates in one list box in another JQuery
I have 2 list boxes. 我有2个清单方块。 The leftBox has all available options the rightBox has that customers selected options.
leftBox具有所有可用选项,rightBox具有客户选择的选项。 I know how to remove and add items from each listbox with jquery.
我知道如何使用jquery从每个列表框中删除和添加项目。 What I am wanting to to is if the item is already in rightBox remove it from the leftBox.
我想要的是,如果该项目已经在rightBox中,请将其从leftBox中删除。 So on the onclick event I want the script to run.
因此,在onclick事件上,我希望脚本运行。
This is my view. 这是我的看法。
<form method="post" action="@Url.Action("SaveMarkets", "Partner")">
<div class="form-group col-sm-4">
@Html.Hidden("partnerID", Model.PartnerInfo.partnerID)
@Html.ListBoxFor(x => x.Markets, Model.MarketNames, new { @class = "form-control input-sm", id = "leftBoxN", onclick = "populatePartnerName()" })
@Html.Hidden("marketName", "", new { @class = "pName" })
<button id="grantAccess" onclick="return ajaxSubmitNotificationForm(this)">Grant Access</button>
</div>
</form>
<form method="post" action="@Url.Action("RemoveMarkets", "Partner")" id="removeAccess">
@Html.Hidden("partnerID", Model.PartnerInfo.partnerID)
@Html.Hidden("partnerMarketID", "", new { @class = "marketID" })
<button id="removeAccess" onclick="return ajaxSubmitRemoveNotification(this)">Remove Access</button>
<div class="form-group col-sm-4">
@Html.ListBox("partnerMarketID", new SelectList(Model.PartnerMarketsList, "partnerMarketID", "marketName"), new { @class = "form-control input-sm", id = "rightBoxN", onclick = "getSelectedValue()" })
</div>
</form>
Here is my JS: 这是我的JS:
function loadRemoveDups() {
var found = [];
$("#rightBoxN option").each(function () {
if ($.inArray("#rightBoxN option".text, found) != -1)
$("#leftBoxN option").remove(found);
});
}
My JS does nothing. 我的JS什么也没做。 Not sure how to do this.
不确定如何执行此操作。 Thanks
谢谢
Rendered Html 呈现的HTML
<div class="modal fade" id="modalMarkets" tabindex="-1" role="dialog" aria-labelledby="MyModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4>Manage Partner Markets</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-12">
<div role="form">
<form method="post" action="/Partner/SaveMarkets">
<div class="form-group col-sm-4">
<input id="partnerID" name="partnerID" type="hidden" value="5" />
<select class="form-control input-sm" id="leftBoxN" multiple="multiple" name="Markets" onclick="populatePartnerName()"><option value="Central Indiana">Central Indiana</option>
<option value="Charlotte">Charlotte</option>
<option value="Columbus OH">Columbus OH</option>
<option value="Raleigh-Durham">Raleigh-Durham</option>
</select>
<input class="pName" id="marketName" name="marketName" type="hidden" value="" />
<button id="grantAccess" onclick="return ajaxSubmitNotificationForm(this)">Grant Access</button>
</div>
</form>
<form method="post" action="/Partner/RemoveMarkets" id="removeAccess">
<input id="partnerID" name="partnerID" type="hidden" value="5" />
<input class="marketID" id="partnerMarketID" name="partnerMarketID" type="hidden" value="" />
<button id="removeAccess" onclick="return ajaxSubmitRemoveNotification(this)">Remove Access</button>
<div class="form-group col-sm-4">
<select class="form-control input-sm" id="rightBoxN" multiple="multiple" name="partnerMarketID" onclick="getSelectedValue()"><option value="1">Central Indiana</option>
<option value="2">Columbus OH</option>
</select>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Using the following you can remove all the elements from leftBoxN
select, that exist in rightBoxN
. 使用下面你可以删除所有的元素
leftBoxN
选择,存在于rightBoxN
。
function loadRemoveDups() { var found = []; $("#rightBoxN option").each(function() { var op = this; $("#leftBoxN option").filter(function() { return this.text == op.text }).remove(); }); } loadRemoveDups();
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <select class="form-control input-sm" id="leftBoxN" multiple="multiple" name="Markets"> <option value="Central Indiana">Central Indiana</option> <option value="Charlotte">Charlotte</option> <option value="Columbus OH">Columbus OH</option> <option value="Raleigh-Durham">Raleigh-Durham</option> </select> <select class="form-control input-sm" id="rightBoxN" multiple="multiple" name="partnerMarketID"> <option value="1">Central Indiana</option> <option value="2">Columbus OH</option> </select>
Select all the options from the slect where no one is contained in the second one (ie: filter the option) and remove: 从选择中选择所有选项,第二个选项中不包含任何选项(即:过滤选项),然后删除:
$(function () { $('#btn').on('click', function(e) { var cacheEle = $('#rightBox'); $('#leftBox option').filter(function(index, element) { return cacheEle.find('option[value="' + element.value + '"]').length == 1; }).remove(); }) });
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <select id="leftBox"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select> <select id="rightBox"> <option value="volvo1">Volvo1</option> <option value="saab1">Saab1</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select> <button id="btn">Remove Duplicated</button>
This should work: 这应该工作:
function loadRemoveDups() {
$("#rightBoxN option").each(function () {
var currentEle = $(this).val();
var domLeftEle = $('#leftBoxN option:contains("' + currentEle + '")');
if ($(domLeftEle).length > 0) {
$(domLeftEle).remove();
}
});
}
Thanks, Prashant 谢谢,Prashant
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.