Имейте в виду, я не хочу использовать Chained. JS или любые Django плагины, у меня не было ничего, кроме проблем с ними, и я пытался это делать в течение длительного времени. Я действительно хотел попробовать это сам, используя jQuery, так как чувствую, что это не должно быть слишком сложно, и предыдущие плагины, которые у меня были (django умный выбор, цепочка. 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% времени Большинство «марок» заполняет второй выпадающий список своими «моделями».
Второй выпадающий список включает название марки («Ford F150», «Toyota Prius» и т. Д. c), поэтому я смог выполнить фильтрацию по включенному тексту. Мне интересно, если что-то не так с моим кодом, я не эксперт по JavaScript или jQuery, но хочу знать, что я делаю не так, чтобы я мог улучшить и преодолеть эту проблему - любая помощь будет принята.
Я использую jQuery 3.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>