Javascript jQuery链接/过滤下拉列表不';不适用于所有选择

Javascript jQuery链接/过滤下拉列表不';不适用于所有选择,javascript,jquery,html,Javascript,Jquery,Html,请记住,我不想使用Chained.JS或任何Django插件,我只是遇到了一些问题,我已经尝试了很长时间。我真的很想亲自尝试使用jQuery,因为我觉得它应该不会太难,而且我以前的插件(django smart selects,chained.js)与我网站上的其他功能(尤其是这个页面)配合得不好 下面是: $(document).ready(function(){ $("#id_carmake").change(function(){ $("#id_carmodel optio

请记住,我不想使用Chained.JS或任何Django插件,我只是遇到了一些问题,我已经尝试了很长时间。我真的很想亲自尝试使用jQuery,因为我觉得它应该不会太难,而且我以前的插件(django smart selects,chained.js)与我网站上的其他功能(尤其是这个页面)配合得不好

下面是:

$(document).ready(function(){
    $("#id_carmake").change(function(){
    $("#id_carmodel option").hide();
    var carbrand = $("#id_carmake option:selected").text();
    $("#id_carmodel option:contains('"+ carbrand +"')").show().filter(function(i){
        return $(this).text() === carbrand;}).prop("selected", true);
    });
});
这是我用来根据第一个选择(汽车品牌、汽车型号)进行第二个下拉选择的代码。我相信这是不言自明的。它确实有效!90%的时间。大多数“make”将用它们的“models”填充第二个下拉列表

第二个下拉列表包括品牌名称(“福特F150”、“丰田普锐斯”等),因此我可以通过包含的文本进行过滤。我想知道我的代码是否有问题,我不是JavaScript或jQuery专家,但我想知道我做错了什么,这样我就可以改进并克服这个问题-任何帮助都将不胜感激

我正在使用jquery3.4.1

以下是HTML下拉列表的缩短版本(如果有帮助):

<select name="carmake" class="select form-control" required="" id="id_carmake"> 
  <option value="" selected="">---------</option> 
  <option value="1">Acura</option> <option value="2">Alfa Romeo</option> 
  <option value="3">AMC</option> 
  <option value="4">Aston Martin</option> 
</select>

<select name="carmodel" class="select form-control" required="" id="id_carmodel"> 
  <option value="" selected="" style="">---------</option> 
  <option value="1" style="display: none;">Acura 2.2CL</option> 
  <option value="2" style="display: none;">Acura 2.3CL</option> 
  <option value="3" style="display: none;">Acura 3.0CL</option> 
</select>

--------- 
阿库拉阿尔法罗密欧酒店
资产管理公司
阿斯顿马丁
--------- 
Acura 2.2CL
Acura 2.3CL
Acura 3.0毫升

由于同一辆车有多个选项,因此可以使用
eq(0)

$(文档).ready(函数(){
$(“#id_carmake”).change(函数(){
$(“#id#u carmodel选项”).hide();
var carbrand=$(“#id_carmake选项:选中”).text();
$(“#id#u carmodel选项:包含(“+carbrand+”))”).show();
$(“#id#u carmodel选项:包含(“+carbrand+”))”).eq(0).attr('selected',true);
});
});

--------- 
阿库拉阿尔法罗密欧酒店
资产管理公司
阿斯顿马丁
--------- 
Acura 2.2CL
Acura 2.3CL
Acura 3.0毫升
阿斯顿马丁2.2CL
阿斯顿马丁2.3毫升
阿斯顿马丁3.0毫升

这实际上效果很好!它把所有的模型都拉了起来。在此之前,每当我点击Scion或Toyota和其他一些品牌时,都不会显示他们的结果。现在,对于那些特定的问题,它在Chrome中显示了第一个结果,在Firefox中显示了所有结果。这似乎是一个浏览器兼容性问题?我会调查的。但是,如果您有任何想法,请告知为什么Chrome不会显示其中一些的所有型号。按下向下键可以看到不同的scion/toyota Chrome车型。试图尽可能清楚地解释这一点。@DavidFerrell,它显示了Chrome中的第一个结果以及Firefox中的所有结果……我在Chrome和Firefox中发现了相同的结果!!!当我在Chrome中运行代码片段时,我提供给您的示例代码可以正常工作。。所以它一定是我代码中的其他东西。我想你回答了我的问题,而我现在面对的是完全不同的事情。谢谢你的帮助,我真的很感激@大卫费雷尔,非常欢迎你,祝你好运:)