Javascript 使用jQuery根据对其他多选的选择填充多选
我在我的主管理区有两个多选择菜单,一个用于页面用户,一个用于页面管理员 我希望它能自动选择用户菜单中与管理菜单中相同的选项,但不能反之亦然 这是我尝试过的代码,但它只是破坏了userOf菜单Javascript 使用jQuery根据对其他多选的选择填充多选,javascript,jquery,Javascript,Jquery,我在我的主管理区有两个多选择菜单,一个用于页面用户,一个用于页面管理员 我希望它能自动选择用户菜单中与管理菜单中相同的选项,但不能反之亦然 这是我尝试过的代码,但它只是破坏了userOf菜单 <select multiple id="userOf"> <option value="1">Page 1</option> <option value="2">Page 2</option> <option val
<select multiple id="userOf">
<option value="1">Page 1</option>
<option value="2">Page 2</option>
<option value="3">Page 3</option>
<option value="4">Page 4</option>
</select>
<br>
<br>
<select multiple id="adminOf">
<option value="1">Page 1</option>
<option value="2">Page 2</option>
<option value="3">Page 3</option>
<option value="4">Page 4</option>
</select>
<script type="text/javascript">
$("#adminOf").change(function() {
var selected=[];
var value;
$("#adminOf option:selected").each(function() {
selected.push($(this).attr("value"))
});
$("#userOf option").each(function() {
value=$(this).val();
if($.inArray(value, selected)){
$(this).attr("selected","selected");
}
});
});
</script>
谢谢, 你的意思是这样的:
var $admins = $("#adminOf");
var $users = $("#userOf");
$admins.change(function(e) {
$admins.find("option").each(function(i,el){
var isSelected = this.selected,
index = i;
$users.find("option").each(function(i){
if(index == i){
this.selected = isSelected;
}
});
});
});
我在IE9中测试了以下代码。它工作得很好。它将把adminOf的选择复制到userOf
$.inArray返回匹配项的索引,如果找不到,则返回-1-1在这样的条件中是“真实的”。查一查!=-它会表现得更像你所期待的。
$("#adminOf").click(function () {
var selected = [];
var value;
$("#userOf").val([]); //unselect all the elements
$("#adminOf option:selected").each(function () {
var valAdmin = $(this).attr("value");
$("#userOf option").each(function () {
var valUser = $(this).attr("value");
if (valAdmin === valUser) {
$(this).attr("selected", "selected");
}
});
});
});