#javascript #html #jquery #append
#javascript #HTML #jquery #добавить
Вопрос:
Я хочу добавить поле выбора и текстовое поле в div, но мой код не работает. Я попробовал свою цель и изучил код других потоков, но то же самое я не смог достичь цели. здесь я показываю единственный основной div, в который я добавляю данные, но в моем реальном случае у меня динамический <div class="note" id="23203">
, поэтому я упоминаю div id
, какой из них уникален.
Я хочу добавить текстовое поле и поле выбора appendApp_body
, когда я нажимаю
кнопку, и то же самое удалить div, если я нажму, чтобы выбрать -
кнопку div
Пожалуйста, помогите мне, как сделать это правильно.
Я хочу, когда я нажимаю кнопку
var xMachine = 1;
$('.add_MoreMachine__button').click(function() {
var qty = $(this).attr("data-qty");
var maxMachineField = qty;
if (xMachine < maxMachineField) {
newrowMachine = '<div class="appendApp_body"><select class="custom-select font-size-sm shadow-none" name="product_name[]"><option>--</option><option>6 AMP (RF)</option></select ><input type="text" class="form-control" maxlength="50" name="productnumber[]" /></div><button type="button" class = "btn btn-danger btn-circle float-right remove_Machinebutton" ><i class="fa fa-minus"></i></button ></div>';
$('.appendApp_body:last').after(newrowMachine);
} else {
alert("Ops...! You have total " maxMachineField " allowed fields to fill and now you don't have extra permission to proceed this action. [error: limit-reached]");
return false;
}
});
$(".complaint_MachineFor4").on("click", ".remove_Machinebutton", function(e) {
e.preventDefault();
$(this).closest('<div>').remove();
xMachine--;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<div class="note" id="23203">
<div class="note-body">
<div class="note-added-on">
<select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
<option value="Issue1">Issue1</option>
</select>
<div class="appendApp_body">
<select class="custom-select font-size-sm shadow-none" name="product_name[]">
<option selected="" value="0">--</option>
<option>6 AMP (RF)</option>
</select>
<input type="text" class="form-control" maxlength="50" name="productnumber[]" />
</div>
<button style="width: 100%; margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="2"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
Ответ №1:
Если есть notes
несколько divs, которые вы можете использовать $(this).closest(".note-added-on")..
для добавления сгенерированных divs только там, где была нажата кнопка. Затем, чтобы удалить то же самое, вы можете использовать $(this).prev('.appendApp_body').remove()
для удаления appendApp_body
div $(this).remove()
, а также для удаления кнопки.
Демонстрационный код :
$('.add_MoreMachine__button').click(function() {
var xMachine = $(this).closest('.note-added-on').find('.appendApp_body').length; //get length of cloned div
var maxMachineField = $(this).attr("data-qty");
//compare
if (xMachine < maxMachineField) {
//just add one extra class..`cloned..`
newrowMachine = '<div class="appendApp_body cloned"><select class="custom-select font-size-sm shadow-none" name="product_name[]"><option>--</option><option>6 AMP (RF)</option></select ><input type="text" class="form-control" maxlength="50" name="productnumber[]" /></div><button type="button" class = "btn btn-danger btn-circle float-right remove_Machinebutton" ><i class="fa fa-minus"></i></button></div>';
//append inside `note-added-on` div
$(this).closest(".note-added-on").append(newrowMachine);
} else {
alert("Ops...! You have total " maxMachineField " allowed fields to fill and now you don't have extra permission to proceed this action. [error: limit-reached]");
return false;
}
});
$(document).on("click", ".remove_Machinebutton", function(e) {
e.preventDefault();
$(this).prev('.appendApp_body').remove(); //get prev div
$(this).remove(); //remove button as well
});
.note {
border: 1px solid blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<div class="note" id="23203">
<div class="note-body">
<div class="note-added-on">
<select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
<option value="Issue1">Issue1</option>
</select>
<div class="appendApp_body">
<select class="custom-select font-size-sm shadow-none" name="product_name[]">
<option selected="" value="0">--</option>
<option>6 AMP (RF)</option>
</select>
<input type="text" class="form-control" maxlength="50" name="productnumber[]" />
</div>
<button style="margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="2"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
<div class="note" id="232031">
<div class="note-body">
<div class="note-added-on">
<select style="margin-bottom: 5px;" class="custom-select font-size-sm shadow-none" name="product_id[]">
<option value="Issue1">Issue1</option>
</select>
<div class="appendApp_body">
<select class="custom-select font-size-sm shadow-none" name="product_name[]">
<option selected="" value="0">--</option>
<option>6 AMP (RF)</option>
</select>
<input type="text" class="form-control" maxlength="50" name="productnumber[]" />
</div>
<button style="margin-top: 10px;" type="button" class="btn btn-success add_MoreMachine__button" data-qty="1"><i class="fa fa-plus"></i></button>
</div>
</div>
</div>
Комментарии:
1. как сделать
xMachine
по умолчанию1
… еслиdata-qty="1"
затем не добавить следующее текстовое поле.. Пожалуйста, помогите и поймите меня2. Просто измените
cloned
, чтобыappendApp_body
добавить это также в обновленный код. Дайте мне знать, если это то, что вам нужно.3. Я хочу добавить, если
data-qty
указано выше1
.. потому1
что область div уже существует ….. на самом деле я отправляю все данные с помощью ajax … если возможно, добавьте также форму, где, если мы нажмем одну кнопку, все входные данные daa будут отправляться через ajax…4. Сколько div вам нужно добавить в зависимости от количества данных? Если да, приведенный выше ответ будет работать нормально. Кроме того, об ajax вы можете задать другой вопрос, и если приведенный выше ответ полезен, вы можете проголосовать и принять его.
5. могу ли я задать еще один вопрос для ajax для этой формы, вы мне поможете? ваш текущий ответ был действительно полезен