Рабочая скрипка .
Вам нужно использовать классы вместо id
, так как при клонировании элементов, которые приведут вас к дублирующим идентификаторам, чтоделает ваш HTML-код недействительным.
Поэтому, когда вы меняете идентификаторы по классам, вы должны передать класс extbed
в функцию x/y
, поскольку, если вы будете использовать .extbed
непосредственно в качестве селектора, он выберетвсе элементы этого класса, которые будут вызывать скрытие всех клонированных и оригинальных экземпляров одновременно.
ПРИМЕЧАНИЕ: Скрыть часть .extbed
в клонированном экземпляре, используя:
$clone.find('.extbed').hide().find('input').val('');
$(document).ready(function() {
var genroomid = 2; // change 0 to the number you want to start with
$(".add-row").click(function() {
var $clone = $("ul.personal-details").first().clone();
var $input = $clone.find('#roomid');
$input.val(genroomid).attr('genroomid', +genroomid) // change fileid with any string you want
$clone.find('.extbed').hide().find('input').val('');
$clone.append("<button type='button' class='remove-row'>-</button>");
$clone.insertBefore(".add-row");
genroomid++; // increase id by 1
});
$(".cloned-removed-div").on("click", ".remove-row", function() {
$(this).parent().remove();
genroomid--;
});
var x = (function(extbed) {
extbed.hide();
$(".divvisextbed").val('0');
});
var y = (function(extbed) {
extbed.show();
$(".divvisextbed").val('1');
});
// code of display guest info of extra bed
$(document).on('change', '.extrabed', function() {
var value2 = $(this).val();
var toAppend2 = '';
var $container2 = $(this).siblings('.container2');
var extbed = $container2.find(".extbed");
switch (value2) {
case 'No':
toAppend2 = x(extbed);
$container2.html(toAppend2);
return;
break;
case 'Yes':
toAppend2 = y(extbed);
$container2.html(toAppend2);
return;
break;
default:
return;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="form_reservations" method="post" action="2loopadd.php">
<div class="cloned-removed-div">
<ul class="personal-details">
<table class="stretch" border="1">
<tr>
<td>
<label for="extrabed">Extra Bed
<select class="stretch extrabed" name="extrabed[]" required="required">
<option value="" disabled selected hidden>Extra Bed</option>
<option value="No">No</option>
<option value="Yes">Yes</option>
</select>
<div class="container2">
<div class='extbed' style='display: none;'>
<input name='divvisextbed[]' class='divvisextbed' type='hidden' value='0'>
<select class='stretch' name='prefixextrabed[]' id='prefixextrabed'>
<option value='Mr'>Mr</option>
<option value='Ms'>Ms</option>
<option value='Child'>Child</option>
<option value='Infant'>Infant</option>
</select>
<input name='fnameextrabed[]' id='fnameextrabed' type='text' class='stretch' placeholder='First Name' size='15' maxlength='30' >
<input name='lnameextrabed[]' id='lnameextrabed' type='text' class='stretch' placeholder='Last Name' size='15' maxlength='30' >
<input name='nationalityextrabed[]' id='nationalityextrabed' type='text' placeholder='Nationality' class='stretch' size='15' maxlength='30' >
</div>
</div></label>
</td>
</tr>
</table>
</ul>
<button type="button" class="add-row">+ New Client</button>
</div>
</form>