Jquery 从散列更新动态选择下拉列表值
我有一个像这样的大杂凑,有品牌和车型: makes_models={AM General:[Hummer],Acura:[CL,ILX,ILX Hybrid、Integra、Legend、MDX、NSX、RDX、RL、RLX、RSX、, SLX,TL,TLX,TSX,TSX运动车,活力,ZDX],阿尔法 罗密欧:[4C],阿斯顿马丁:[DB7,DB9,DBS,拉皮德,拉皮德 S、 V12征服,V12优势,V8优势,征服, 奥迪:[100200,80,90,A3,A3-e-tron,A4, A5、A6、A7、A8、Cabriolet、Coupe、Q1、Q3、Q5、Q7、, R8,RS 4,RS 5,RS 6,RS 7,S3,S4,S5,S6,S7, S8,SQ5,TT,TT RS,TTS,V8,allroad,allroad quattro]} 我有一个select,可以让您选择模型的哈希键:Jquery 从散列更新动态选择下拉列表值,jquery,ruby-on-rails,Jquery,Ruby On Rails,我有一个像这样的大杂凑,有品牌和车型: makes_models={AM General:[Hummer],Acura:[CL,ILX,ILX Hybrid、Integra、Legend、MDX、NSX、RDX、RL、RLX、RSX、, SLX,TL,TLX,TSX,TSX运动车,活力,ZDX],阿尔法 罗密欧:[4C],阿斯顿马丁:[DB7,DB9,DBS,拉皮德,拉皮德 S、 V12征服,V12优势,V8优势,征服, 奥迪:[100200,80,90,A3,A3-e-tron,A4, A5、
<%= vehicle.select(:make, options_for_select(["AM General", "Acura", ...] )) %>
我让jQuery根据选择的make更新模型选择:
$('select#quote_vehicles_make').change(function() {
$.each(models[$(this).val()], function( idx, value ) {
$('select#quote_vehicles_models').html("<option>" + value + "</option>");
});
});
型号选择:
<select id="quote_vehicles_models">
<option>...</option>
</select>
问题是select只返回makes\u models散列中的最后一个值。例如,如果我选择:Acura,那么模型选择updates,并且只显示:ZDX
如何修复这个jQuery?
它们是从散列生成动态选择框的简单rails/jQuery解决方案吗?
我解决了自己的问题:jQuery:
$('select#quote_vehicles_make').change(function() {
$('select#quote_vehicles_models').empty();
$.each(models[$(this).val()], function( idx, value ) {
$('select#quote_vehicles_models').append("<option>" + value + "</option>");
});
});
仍然对面向Rails的解决方案感兴趣(如果有的话)。谢谢。请考虑以下数据结构:
def make
{"AM General":["Hummer"], "Acura":["CL", "ILX", "ILX Hybrid", "Integra", "Legend", "MDX",
"NSX", "RDX", "RL", "RLX", "RSX", "SLX", "TL", "TLX", "TSX", "TSX Sport Wagon", "Vigor", "
ZDX"], "Alfa Romeo":["4C"], "Aston Martin":["DB7", "DB9", "DBS", "Rapide", "Rapide S", "V12
Vanquish", "V12 Vantage", "V8 Vantage", "Vanquish", "Virage"], "Audi":["100", "200", "80",
"90", "A3", "A3 e-tron", "A4", "A5", "A6", "A7", "A8", "Cabriolet", "Coupe", "Q1", "Q3",
"Q5", "Q7", "R8", "RS 4", "RS 5", "RS 6", "RS 7", "S3", "S4", "S5", "S6", "S7", "S8", "SQ5",
"TT", "TT RS", "TTS", "V8", "allroad", "allroad quattro"]}[model]
end
然后,您可以列出每辆车的型号,如:
make[@vehicle.model]
您也可以使用jquery实现这一点,只需将make函数定义为javascript函数,获取所选模型,并将其传递给make函数。输出将是该模型的make数组,然后您可以将其作为html选项传递给下一个选择框