Как ссылаться на селектор в jQuery для тега select, когда в одной форме имеется несколько раскрывающихся полей?

#javascript #jquery #jquery-select2

#язык JavaScript #jquery #jquery-выбор 2

Вопрос:

У меня есть 4 поля выбора в одной форме. Мой код jQuery захватывает только одно поле. Как я могу захватить другие поля и извлечь их значения?

Кроме того, я применил плагин Select2 ко всем этим полям. Может кто-нибудь, пожалуйста, проводить меня? Заранее спасибо.

 $('select').change(function() {  var optionSelected = $(this).find("option:selected");  var valueSelected = optionSelected.val();  var textSelected = optionSelected.text();  var csr = $("input[name=csrfmiddlewaretoken]").val();  console.log(textSelected); }); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"gt;lt;/scriptgt; lt;label for="id_package_form-patient"gt;Patient:lt;/labelgt; lt;select name="package_form-patient" required id="id_package_form-patient"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="8"gt;jfkdfkldlfdlt;/optiongt; lt;/selectgt;   lt;label for="id_package_form-diagnosis"gt;Diagnosis:lt;/labelgt; lt;select name="package_form-diagnosis" required id="id_package_form-diagnosis"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;fefafdlt;/optiongt;  lt;option value="2"gt;effeafaefelt;/optiongt; lt;/selectgt;  lt;label for="id_package_form-treatment"gt;Treatment:lt;/labelgt; lt;select name="package_form-treatment" required id="id_package_form-treatment"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;fdfeflt;/optiongt; lt;/selectgt;   lt;label for="id_package_form-patient_type"gt;Patient type:lt;/labelgt; lt;select name="package_form-patient_type" required id="id_package_form-patient_type"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;kflkdjkflt;/optiongt;  lt;option value="2"gt;fldfjdfjlt;/optiongt; lt;/selectgt; 

Комментарии:

1. Потому $(this) что относится к select элементу, значение которого было изменено.

2. Вы имеете в виду, что, когда один из вариантов выбора изменится, вы хотите иметь значения всех вариантов выбора?

3. @SaeedShamloo На самом деле нет, сначала я собираюсь сделать $(document).ready() , затем я хочу извлечь значения из всех полей выбора в форме, чтобы выполнить некоторые математические вычисления. Так как же я могу это сделать?

Ответ №1:

Чтобы получить выделенный текст всех select элементов, вы можете использовать map() их для построения массива, например:

 let getSelectedText = () =gt; {  let textArr = $selects.map((i, el) =gt; $(el).find('option:selected').text()).get();  console.log(textArr); } let $selects = $('select').on('change', getSelectedText); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"gt;lt;/scriptgt; lt;label for="id_package_form-patient"gt;Patient:lt;/labelgt; lt;select name="package_form-patient" required id="id_package_form-patient"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="8"gt;jfkdfkldlfdlt;/optiongt; lt;/selectgt;   lt;label for="id_package_form-diagnosis"gt;Diagnosis:lt;/labelgt; lt;select name="package_form-diagnosis" required id="id_package_form-diagnosis"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;fefafdlt;/optiongt;  lt;option value="2"gt;effeafaefelt;/optiongt; lt;/selectgt;  lt;label for="id_package_form-treatment"gt;Treatment:lt;/labelgt; lt;select name="package_form-treatment" required id="id_package_form-treatment"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;fdfeflt;/optiongt; lt;/selectgt;   lt;label for="id_package_form-patient_type"gt;Patient type:lt;/labelgt; lt;select name="package_form-patient_type" required id="id_package_form-patient_type"gt;  lt;option value="" selectedgt;---------lt;/optiongt;  lt;option value="1"gt;kflkdjkflt;/optiongt;  lt;option value="2"gt;fldfjdfjlt;/optiongt; lt;/selectgt; 

Комментарии:

1. Спасибо. Это сработало!