我有2个列表框(项目使用jquery在它们之间移动)。已经选择了item1。然后,如果我一起选择item1和item2和item3,则只应在第二个列表框中插入item2和3。
我没有从Listbox1中删除项目。我只需要检查列表框2中是否存在其中一个选定项目。
//Code
$('#btnAdd').click(function () {
var selectedOptions = $('#<%=lstAllRole.ClientID %> option:selected');
if (selectedOptions.length == 0) {
alert("Please select option to move");
return false;
}
if (selectedOptions.length == 1) {
if ($("#<%=lstSelectedRole.ClientID %> option[value='" + selectedOptions.val() + "']").length > 0) {
}
else {
$('#<%=lstSelectedRole.ClientID %>').append($(selectedOptions).clone());
}
}
else if (selectedOptions.length > 1) { // Selecting more than one item to move--only append items which are not in 2nd listbox
// **I need to validate here**
}
});
答案 0 :(得分:4)
假设这是你想要的......
试试这个
else if (selectedOptions.length > 1) { // Selecting more than one item to move--only append items which are not in 2nd listbox
var tempArray= $.map(selectOptions, function(n){
return this.value;
});
if($.inArray("valueTochekcInSelectedOption", tempArray) != -1)
{
//value not selected in list 1
}else{
//value selected in list 1
}
}
答案 1 :(得分:3)
只需运行一个foreach函数,您就会找到这些项目。
//代码
else if (selectedOptions.length > 1) {
$(selectedOptions).each(function () {
if ($("#<%=lstSelectedRole.ClientID %> option[value='" + this.value + "']").length > 0) {
// Do your stuff
} else {
$('#<%=lstSelectedRole.ClientID %>').append($(this).clone());
}
});
}
答案 2 :(得分:0)
我认为只要选择一个或多个选项时,您就不需要区别对待这些情况。只需获取所选元素的列表并迭代它,添加到第二个列表(如果它尚不存在)。类似的东西应该有用:
$('#btnAdd').click(function () {
var selectedOptions = $('#<%=lstAllRole.ClientID %> option:selected');
var optionsAlreadyInTheList = $('#<%=lstSelectedRole.ClientID %> option');
if (selectedOptions.length == 0) {
alert("Please select option to move");
return false;
} else {
selectedOptions.each(function() {
isInTheList = false;
for(i=0; i< optionsAlreadyInTheList.length; i++) {
if ($(this).val() == optionsAlreadyInTheList[i].val()) {
isInTheList = true;
}
}
if( ! isInTheList ) {
$('#<%=lstSelectedRole.ClientID %>').append($(selectedOptions).clone());
}
});
}
});
这段代码只是为了给出一个想法。我是在没有测试的情况下编写的,可能无法正常工作。