简体   繁体   English

在另一个JQuery的一个列表框中删除重复项

[英]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">&times;</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.

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