#javascript #jquery #html
#javascript #jquery — jquery — запрос #HTML #jquery
Вопрос:
У меня есть следующий HTML:
<select id="MySelector" multiple="multiple">
<option value="2">Option A</option>
<option value="7">Option B</option>
<option value="9">Option C</option>
<option value="12">Option D</option>
</select>
<div id="CheckSelected">click here to select</div>
Я хочу перебрать параметры выбора и определить, какие из них были выбраны.
Я хочу сделать что-то вроде этого:
ArrayOfSelected = [];
$('#CheckSelected').click(function {
"if option is selected then add value to the array"
});
Спасибо за ваши предложения.
Комментарии:
1. Это новый массив, который вы создаете, или у вас есть существующий массив, в который вы хотите добавить значения?
Ответ №1:
$('#MySelector').val()
выдает массив, содержащий значения выбранных элементов.
Ответ №2:
у вас должно сработать что-то подобное. Найдите option:selected
и для каждого из них поместите значение в массив.
$('#CheckSelected').click(function() {
ArrayOfSelected.length = 0; //empty the array.
$("#MySelector option:selected").each(function() {
ArrayOfSelected.push($(this).val());
});
});
Ответ №3:
попробуйте это:
ArrayOfSelected = [];
$('#CheckSelected').click(function {
$('#MySelector option:selected').each(function(){
ArrayOfSelected.push($(this).val());
})
});
Ответ №4:
Вы можете сделать это с помощью щелчков в окне выбора опций в режиме реального времени вместо того, чтобы выбирать опцию, а затем нажимать на раздел «нажмите здесь, чтобы выбрать». Выполните следующее:
var ArrayOfSelected = [];
$('select#MySelector').change(function(){
ArrayOfSelected.length = 0;
ArrayOfSelected.push($(this).val());
$("#picks").empty().append("<h1>selected: " ArrayOfSelected "</h1>");
});
Функция .change() сообщает функции обратного вызова о выполнении, когда параметр в пределах указанного ввода select был изменен. Таким образом, при каждом нажатии на поле выбора будет выполняться обратный вызов…
Выполнение этого способа уменьшит количество кликов, которые пользователь должен выполнить, чтобы добавить параметр в массив.
Обновить
Я протестировал это в вашей ссылке jsfiddle, и это работает так, как вы хотите.
Ответ №5:
Вы можете сделать это без зацикливания с помощью jQuery:
$('#CheckSelected').click(function() {
if($('#MySelector').val() == 'your_option') {
//add to array code
}
}
Комментарии:
1. этот код отчасти бесполезен… куда ведет этот оператор if?
2. Если этот оператор if находится вне цикла, то что инициирует выполнение if? Вы опубликовали недостаточно кода, чтобы помочь ему…
3. Виноват, вы оба правы. Вы не пьете и не кодируете. Я постараюсь запомнить это завтра: D