, когда выпадающие списки 1-го (целевого) и 2-го (притяжения или активности) выбираются из вариантов, третий раскрывающийся список показывает динамически доступные действия или достопримечательности.Как добавить кнопку «Добавить еще» в список раскрывающегося списка?
здесь демо: http://codepen.io/foolishcoder7721/pen/jWYOxm
моя наценка:
<div class="multi-field-wrapper">
<button type="button" class="add-field">Add Destination</button>
<div class="multi-fields">
<div class="multi-field">
<select class="text-one" name="destination[]">
<option selected value="base">Please Select</option>
<option value="colombo">Colombo</option>
</select>
<br />
<select class="text-two" name="attraction_or_activity[]">
<option value="attraction_or_activity">Select the attractions or activities</option>
<option value="attraction">Attraction</option>
<option value="activity">Activity</option>
</select>
<select id="populated_attr_or_activity" name="attraction_or_activity_selected[]">
<!-- here I ahve to populate the ARRAYS as option -->
<option value="available_attr_act">Available attractions/activities</option>
</select>
</div>
</div>
И JQuery для этого:
<script>
$(document).ready(function() {
$(".text-two").change(function() { // when the attraction_OR_activity dropdown is selected
$('#populated_attr_or_activity').html(''); // emptying the selections of 3rd dropdown list if there was any selections were made before.
/* saving selected values in variables */
var selected_destination = $('.text-one :selected').val();
var selected_attraction_or_activity = $('.text-two :selected').val();
colombo_attractions = new Array("Ganga Ramaya","National Art Gallery","Galle Face Green","Arcade Indepentent Square");
colombo_activities = new Array("City Walk 2016","Traditional Dance Competition 2016","Local Spicy food");
if (selected_destination == 'colombo' && selected_attraction_or_activity == 'attraction') {
colombo_attractions.forEach(function(t) {
$('#populated_attr_or_activity').append('<option>'+t+'</option>');
});
}
if (selected_destination == 'colombo' && selected_attraction_or_activity == 'activity') {
colombo_activities.forEach(function(t) {
$('#populated_attr_or_activity').append('<option>'+t+'</option>');
});
}
});
</script>
Эта часть работает отлично.
Теперь я хочу добавить еще (добавить пункт назначения) кнопку, чтобы создать другой набор одинаковых списков выпадающего списка. поэтому гости могут выбрать несколько аттракционов и мероприятия. Для этого я добавил следующую часть jQuery для скрипта.
<script>
/* ADD DESTINATION */
$('.multi-field-wrapper').each(function() {
var $wrapper = $('.multi-fields', this);
var x = 1;
$(".add-field", $(this)).click(function(e) {
x++;
$($wrapper).append('<div class="multi-field"><select class="text-one'+x+'" name="destination[]"><option selected value="base">Please Select</option><option value="colombo">Colombo</option><option value="kandy">Kandy</option><option value="anuradhapura">Anuradhapura</option></select><br/><select class="text-two'+x+'" name="attraction_or_activity[]"><option value="attraction_or_activity">Select the attractions or activities</option><option value="attraction">Attraction</option><option value="activity">Activity</option></select><select id="populated_attr_or_activity'+x+'" name="attraction_or_activity_selected[]"><option value="available_attr_act">Available attractions/activities</option></select><a href="#" class="remove_field">Remove</a></div>');
});
$($wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
});
</script>
Я могу получить набор же списка, когда я нажимаю <button type="button" class="add-field">Add Destination</button>
Remove также отлично работает. Вы можете проверить демонстрационную версию: http://codepen.io/foolishcoder7721/pen/jWYOxm
, но проблема в том, что я не могу загрузить «доступное притяжение/действия» на второй или третий набор выпадающего списка.
Я думаю, что из-за той же переменной ИМЯ Я использую в selected_destination
и selected_attraction_or_activity
.
var selected_attraction_or_activity+x
дает мне ошибку.
Как это сделать?
Что мне нужно изменить, чтобы генерировать динамические переменные и массивы для загрузки доступных аттракционов/действий в третьем выпадающем списке в списке 2-го и 3-го динамически сгенерированных выпадающих списков в соответствии с выбранными параметрами?
В таком случае, вы, возможно, следует не использовать идентификаторы или имена для выбора элементов для начала - а скорее перемещаться между элементами по их взаимосвязи в DOM. https://api.jquery.com/category/traversing/tree-traversal/ – CBroe
Попробуйте изменить свой код, как показано ниже, https://jsfiddle.net/2am152en/ – Manju