Здесь есть пара проблем:
- Вы клонируете элементы, а затем пытаетесь получить к ним доступ через один и тот же идентификатор (вы должны использовать класс)
- Ваши функции не нацелены только на элемент с кликом, а на любой элемент с селектором.
- Вы клонируете элементы, поэтому вам нужно связать событие click с не клонированным элементом: например, через
$(document).on
Я обновил часть своего кода, чтобы продемонстрировать, о чем я говорю. В HTML, я добавил классы в trigger2
и hidden_fields2
элементах и display:none
стиле для скрытых полей , чтобы они по умолчанию скрыты .:
<div class="col-md-2">
<div class="checkbox checkbox-styled">
<label><em>Half Plate Price</em>
<input type="checkbox" value="" class="trigger2" id="trigger2" name="question"> </label>
</div>
</div>
<div class="col-md-1">
<div id="hidden_fields2" class="hidden_fields2" style="display:none;">
<input type="text" id="hidden_field2" name="hidden" placeholder="Price" class="form-control" style="width:140%;margin-left:-35px;height: 29px;margin-top: 24px;font-weight: 380;font-size: 16px;line-height: 1.5;"> </div>
</div>
В javascript я изменил функцию для запуска из $(document).on
привязки событий и использовал класс element вместо id. Я также изменил код, поэтому он влияет только на изменение флажка и ближайших скрытых элементов:
$(function() {
$(document).on('change', '.trigger2', function(){
var checkbox = $(this);
var parent = checkbox.closest('.form-inline');
var hidden = parent.find(".hidden_fields2");
hidden.hide();
if (checkbox.is(':checked')) {
// Show the hidden fields.
hidden.show();
} else {
hidden.hide();
$(".hidden_field2").val("");
}
});
});
Вам нужно использовать ту же логику для других функций и входов.