我有2个列表框。 leftBox具有rightBox具有客户选择选项的所有可用选项。我知道如何使用jquery从每个列表框中删除和添加项目。我想要的是如果项目已经在rightBox中从leftBox中删除它。因此,在onclick事件中,我希望脚本能够运行。
这是我的看法。
<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>
这是我的JS:
function loadRemoveDups() {
var found = [];
$("#rightBoxN option").each(function () {
if ($.inArray("#rightBoxN option".text, found) != -1)
$("#leftBoxN option").remove(found);
});
}
我的JS什么也没做。不知道该怎么做。 感谢
呈现的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>
答案 0 :(得分:0)
使用以下内容,您可以删除leftBoxN
中存在的rightBoxN
选择中的所有元素。
function loadRemoveDups() {
var found = [];
$("#rightBoxN option").each(function() {
var op = this;
$("#leftBoxN option").filter(function() {
return this.text == op.text
}).remove();
});
}
loadRemoveDups();
&#13;
<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>
&#13;
答案 1 :(得分:0)
从slect中选择所有选项,其中第二个中不包含任何人(即:过滤选项)并删除:
$(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();
})
});
&#13;
<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>
&#13;
答案 2 :(得分:0)
这应该有效:
function loadRemoveDups() {
$("#rightBoxN option").each(function () {
var currentEle = $(this).val();
var domLeftEle = $('#leftBoxN option:contains("' + currentEle + '")');
if ($(domLeftEle).length > 0) {
$(domLeftEle).remove();
}
});
}
谢谢, PRASHANT