Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 使用jquery筛选下拉列表中的多个值_Javascript_Jquery_Dropdown - Fatal编程技术网

Javascript 使用jquery筛选下拉列表中的多个值

Javascript 使用jquery筛选下拉列表中的多个值,javascript,jquery,dropdown,Javascript,Jquery,Dropdown,我正在做一些事情,需要确保下拉列表中的值不能在少数几个下拉列表中重复。这意味着一旦选择了该值,就不应该在其余下拉列表中再次出现。现在我面临的问题是,当我单击第一个下拉列表时,第二个下拉列表中的值不会出现。这是我想要的,它看起来很漂亮,而且很好用。但是当我选择第二个下拉列表时,第三个下拉列表将显示我在其下拉列表中选择的值这不是我想要的 $'ext1'。关于'change',函数{ 如果$this.data'options'==未定义{ $this.data'options',$'ext2 opt

我正在做一些事情,需要确保下拉列表中的值不能在少数几个下拉列表中重复。这意味着一旦选择了该值,就不应该在其余下拉列表中再次出现。现在我面临的问题是,当我单击第一个下拉列表时,第二个下拉列表中的值不会出现。这是我想要的,它看起来很漂亮,而且很好用。但是当我选择第二个下拉列表时,第三个下拉列表将显示我在其下拉列表中选择的值这不是我想要的

$'ext1'。关于'change',函数{ 如果$this.data'options'==未定义{ $this.data'options',$'ext2 option'.clone; } var val=$this.val; var options=$this.data'options.filter'[value!=\'+val+'\]'; $'ext2'.htmloptions; $'ext2'.val'0'; }; $'ext2'。关于'change',函数{ 如果$this.data'options'==未定义{ $this.data'options',$'ext3 option'.clone; } var val=$this.val; var options=$this.data'options.filter'[value!=\'+val+'\]'; $'ext3'.htmloptions; $'ext3'.val'0'; }; 额外增值税1: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税2: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税3: -没有额外的VAS- VAS 1 VAS 2 VAS 3
只需更改$'ext2'下的行。在'change'上,函数

发件人:

致:

我已经包括多个过滤器,从第一个选择框中过滤出所选值

$'ext1'。关于'change',函数{ 如果$this.data'options'==未定义{ $this.data'options',$'ext2 option'.clone; } var val=$this.val; var options=$this.data'options.filter'[value!=\'+val+'\]'; $'ext2'.htmloptions; $'ext2'.val'0'; }; $'ext2'。关于'change',函数{ 如果$this.data'options'==未定义{ $this.data'options',$'ext3 option'.clone; } var val=$this.val; var options=$this.data'options.filter'[value!=\'+val+'\]'。filter'[value!=\'+$'ext1.val+'\]'; $'ext3'.htmloptions; $'ext3'.val'0'; }; 额外增值税1: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税2: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税3: -没有额外的VAS- VAS 1 VAS 2 VAS 3
如果要增加选择框的数量,还可以使用选项的禁用状态。以下是您的修改版本:

$select[name^='ext']。一旦更改,函数{ var selectedValues=[]; $select[name^='ext']。每个函数{ 如果$this.val!==0个selectedValues。按$this.val; }; $select[name^='ext']选项:未选定。每个函数{ 如果选择$this.attrvalue>=0的值.indexOf$this.attrvalue>=0{ $this.attr已禁用,已禁用; }否则{ $this.attrdisabled,false; } }; }; 额外增值税1: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税2: -没有额外的VAS- VAS 1 VAS 2 VAS 3 额外增值税3: -没有额外的VAS- VAS 1 VAS 2 VAS 3
这是因为在ext2下拉列表的更改事件中,您只要求应用程序检查ext2选择的值。在进入ext3ya之前,您需要检查所有下拉列表,这就是我在这里询问的原因。因为我不知道如何在ext1中选择值并使其过滤到ext3下拉列表。如果我不懂英语,很抱歉。因此,您可以做的是,而不是使用id作为选择器,为下拉列表提供一个类。然后在change函数循环中,使用一个简单的$遍历所有下拉列表,并检查是否选择了值。这也是一种方法,谢谢您的建议。可能会在Futuratank bro中使用,现在我只知道可以在同一行中过滤两个值。今天学到了很多:谢谢你的回答,我有一些问题想问,如果你知道的话,请告诉我。因为我学jquery还不到6个月,还是个新手。我可以知道这种“残疾状态”有什么好处吗?因为上次我在玩代码时尝试过这个,我注意到它仍然会显示值,用户无法选择显示的值,所以为什么不在第一时间隐藏它或完全不显示它。当用户从另一个下拉列表中选择另一个日期时,您无需再次将“已删除”选项添加到所有其他选择框中。您只会更改它的禁用状态。在UI/UX方面,这将告诉用户这些选项由于某些原因而被禁用,并且用户将理解一个值不应该被多次选择,并防止混淆。阅读以下答案:
var options = $(this).data('options').filter('[value!=\"' + val + '\"]');
var options = $(this).data('options').filter('[value!=\"' + val + '\"]').filter('[value!=\"' + $('#ext1').val() + '\"]');