动态多下拉Javascript Ajax
我想知道是否可以做一个动态下拉列表。假设我有3个动态下拉列表,它的值是3个用户,我希望它是灵活的 e、 g: 如果从dropdown1=UserC中选择, dropdown2和dropdown3将列出剩余的用户UserA和UserB, 同时,当从dropdown3=UserA中选择时,dropdown1列出了2 user=UserB和UserC,dropdown2将只列出1个用户UserB动态多下拉Javascript Ajax,javascript,ajax,Javascript,Ajax,我想知道是否可以做一个动态下拉列表。假设我有3个动态下拉列表,它的值是3个用户,我希望它是灵活的 e、 g: 如果从dropdown1=UserC中选择, dropdown2和dropdown3将列出剩余的用户UserA和UserB, 同时,当从dropdown3=UserA中选择时,dropdown1列出了2 user=UserB和UserC,dropdown2将只列出1个用户UserB 我知道这很棘手,但是可以用javascript或AJAX创建吗?试试下面的代码,当有人再次选择第一个项目时
我知道这很棘手,但是可以用javascript或AJAX创建吗?试试下面的代码,当有人再次选择第一个项目时,您可能需要添加逻辑来添加未选择的项目
<HTML>
<BODY>
<FORM name="addproductfrm" id="addproductform" method="POST" action="/storeproduct">
<select name="dropdown1" id="dropdown1" onchange="removeSelectedItem(this)">
<option value="">-- Select --</option>
<option value="User A">User A</option>
<option value="User B">User B</option>
<option value="User C">User C</option>
</select>
<select name="dropdown2" id="dropdown2" onchange="removeSelectedItem(this)">
<option value="">-- Select --</option>
<option value="User A">User A</option>
<option value="User B">User B</option>
<option value="User C">User C</option>
</select>
<select name="dropdown2" id="dropdown2" onchange="removeSelectedItem(this)">
<option value="">-- Select --</option>
<option value="User A">User A</option>
<option value="User B">User B</option>
<option value="User C">User C</option>
</select>
</FORM>
</BODY>
<script type="text/javascript">
function removeSelectedItem(selectedItem)
{
var selectedValue = selectedItem.options[selectedItem.selectedIndex].value
console.log(selectedValue);
var selectBoxes = document.getElementsByTagName("select");
for (var i=0; i < selectBoxes.length; i++)
{
var curValue = selectBoxes[i].options[selectBoxes[i].selectedIndex].value
for (var j=1; j < selectBoxes[i].options.length; j++)
{
if (j != selectBoxes[i].selectedIndex && selectBoxes[i].options[j].value == selectedValue)
selectBoxes[i].remove(j);
}
}
}
</script>
</HTML>
检查这个
Select User:<select name="userSelect" id="first">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
Select User:<select name="userSelect" id="second">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
Select User:<select name="userSelect" id="third">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
<script>
$(document).ready(function() {
$("select[name=userSelect]").change(
function() {
var all = [];
var arrId=$("select[name=userSelect]");
for(i=0;i<arrId.length;i++){
//alert($(arrId[i]).attr('id'));
all.push($(arrId[i]).attr('id'));
}
var index = all.indexOf($(this).attr('id'));
all.splice(index, 1);
for(i=0;i<all.length;i++){
$('#'+all[i]+'').find("[value="+$(this).val()+"]").remove();
}
//var selectId=$(this).attr('id');
//var selectedVal=$(this).val();
//alert( $(this).val());
});
});
</script>
。但是它不会像你提到的那样重新计算值。尝试更改相同的…任何事情都是可能的。很好,但是当选择dropdown1后,将其设置回-Select-该值不会在dropdown2和dropdown3重新计算。是的,我知道这一点,并在我的回答中提到。您必须记住当前选择框的最后一个值,如果其值更改为-select-,则将最后一个值添加到所有组合框中(如果它们不存在)。明白了,我尝试使用jquery,并对urs javascript var prevVal进行了一些修改;$document.readyfunction{$'[id^=dropdown]'。单击函数{prevVal=$this.val;};$'[id^=dropdown]'。更改函数{var id=$this.attrid.replacedropdown,;var val=$this.val;forvar i=1;我很高兴知道我的答案对您有所帮助。
Select User:<select name="userSelect" id="first">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
Select User:<select name="userSelect" id="second">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
Select User:<select name="userSelect" id="third">
<option value="">-- Select --</option>
<option value="userA">userA</option>
<option value="userB">userB</option>
<option value="userC">userC</option>
</select>
<script>
$(document).ready(function() {
$("select[name=userSelect]").change(
function() {
var all = [];
var arrId=$("select[name=userSelect]");
for(i=0;i<arrId.length;i++){
//alert($(arrId[i]).attr('id'));
all.push($(arrId[i]).attr('id'));
}
var index = all.indexOf($(this).attr('id'));
all.splice(index, 1);
for(i=0;i<all.length;i++){
$('#'+all[i]+'').find("[value="+$(this).val()+"]").remove();
}
//var selectId=$(this).attr('id');
//var selectedVal=$(this).val();
//alert( $(this).val());
});
});
</script>