Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于另一个下拉列表从下拉列表中排除项目_Javascript_Jquery - Fatal编程技术网

Javascript 如何基于另一个下拉列表从下拉列表中排除项目

Javascript 如何基于另一个下拉列表从下拉列表中排除项目,javascript,jquery,Javascript,Jquery,我有三个相同的下拉列表。我想从drop1中选择一个值,并将该值从drop2中排除。那么drop3中的选择应该排除1和2。有什么想法吗 <select name="drop1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value

我有三个相同的下拉列表。我想从drop1中选择一个值,并将该值从drop2中排除。那么drop3中的选择应该排除1和2。有什么想法吗

<select name="drop1">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<select name="drop2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>
<select name="drop3">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

1.
2.
3.
4.
5.
1.
2.
3.
4.
5.
1.
2.
3.
4.
5.

根据您对PHP或AJAX的熟悉程度,您有两种解决方案。 如果您对PHP比较熟悉,您可以让用户从一个select表单提交数据,然后使用If语句,如

if $value != '1'{ 
echo '<option value="1">1</option>'; 
}
如果$value!='1'{ 
回声“1”;
}
并对第二种形式的每个字段执行该操作;然后将其复制到第三种形式

更平滑的解决方案是使用AJAX使用监听器查看用户单击某个字段时,java值被设置为该字段,并在java脚本变量上使用类似的“if-then-show”方法隐藏其他表单中包含该值的字段

另外,最简单的解决方案之一是允许多个选择(假设您对使用一个表单的外观没有意见&表单之间的值与上面给出的示例相同)。。。例如:

<select id="my_num" name="my_num" size="5" multiple="multiple" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

1.
2.
3.
4.
5.

您可以使用change event并从dom中删除所选元素

$('select[name=drop1]').change(function() {
    var drop2 = $('select[name=drop2]').empty().hide();
    var exclude = $(this).val();
    var size = $(this).children().length;
    for (var i=0; i<size; ++i) {
        if (i != exclude) {
           drop2.append('<option value="' + i + '">' + i + '</option>';
        }
    }
});
?
var clone = $('select[name=drop2]').clone();
$('select[name=drop1]').change(function() {
    var copy = clone.clone();
    copy.find('option[value=' + $(this).val() + ']').remove().end();
    $('select[name=drop2]').replaceWith(copy);
});