#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. Спасибо. Это сработало!