Вход

Просмотр полной версии : Генерация и удаление


EleGant
18.11.2013, 15:41
Подскажите, вот есть код..
<div id="variants">

<div class="control-group" id="uzz">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
</div>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){

var variant = $('#uzz').clone(true);


$('#ss').click(function() {

$(variant).clone(true).appendTo('#variants').fadeI n('slow').find("input[name*=name]").focus();
});

$('a.del_variant').click(function() {

$("#uzz").remove(); });
});


</script>

</div><span id="ss">Добавить вариант</span>

При нажатии на ДОБАВИТЬ ВАРИАНТ,..все, оке..добавляется, но вот при тыки на Х работает только первый вариант...Как сделать что бы при нажатии на против каждого работало именно для него?

ksa
18.11.2013, 15:58
Как сделать что бы при нажатии на против каждого работало именно для него?
Используй ссылку на "кликнутый" элемент - this...

рони
18.11.2013, 16:00
EleGant,
22 строка начало $(document).on('click', далее по документации и думайте что удалять

EleGant
18.11.2013, 22:48
Используй ссылку на "кликнутый" элемент - this...

$(this).remove(); });

Сделал, так, стал удаляться только X в первом инпуте.

рони
18.11.2013, 23:14
EleGant,
:cray: :cray:
<!DOCTYPE HTML>
<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#ss, .del_variant{
cursor: pointer;
}

</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document)
.ready(function () {
var variant = $('#uzz')
.clone(true);
$('#ss')
.click(function () {
$(variant)
.clone(true)
.appendTo('#variants')
.fadeIn('slow')
.find("input[name*=name]")
.focus();
});
$(document)
.on('click', 'a.del_variant', function () {
$(this)
.parents(".control-group")
.remove();
});
});
</script>
</head>

<body>
<div id="variants">
<div class="control-group" id="uzz">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
</div>
</div><span id="ss">Добавить вариант</span>
</body>

</html>

EleGant
19.11.2013, 08:01
Спасибо!!)

ksa
19.11.2013, 08:56
Сделал, так, стал удаляться только X в первом инпуте.
А на "дальше" уже соображалки не хватило? :)

KEMPZOR
09.03.2017, 18:00
EleGant,
:cray: :cray:
<!DOCTYPE HTML>
<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#ss, .del_variant{
cursor: pointer;
}

</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document)
.ready(function () {
var variant = $('#uzz')
.clone(true);
$('#ss')
.click(function () {
$(variant)
.clone(true)
.appendTo('#variants')
.fadeIn('slow')
.find("input[name*=name]")
.focus();
});
$(document)
.on('click', 'a.del_variant', function () {
$(this)
.parents(".control-group")
.remove();
});
});
</script>
</head>

<body>
<div id="variants">
<div class="control-group" id="uzz">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
</div>
</div><span id="ss">Добавить вариант</span>
</body>

</html>

Подниму вопросик, а как сделать кнопку закрыть только для второго и последующих, первый не должен закрываться ?

Diphenyl Oxalate
09.03.2017, 18:17
KEMPZOR, в 29-ой строчке поменять

'a.del_variant'
на
'a.del_variant:not(:first)'

рони
09.03.2017, 18:58
Diphenyl Oxalate,
а как решить не меняя ничего в скрипте?

Diphenyl Oxalate
09.03.2017, 19:33
рони, заинтриговали. Не знаю.

рони
09.03.2017, 19:37
Diphenyl Oxalate,

как сделать кнопку закрыть только для второго и последующих
может это вам подскажет решение.

рони
09.03.2017, 19:46
Diphenyl Oxalate,
следущая подсказка не только в скрипте ничего не менять, но и в body.

рони
09.03.2017, 19:52
Diphenyl Oxalate,
<!DOCTYPE HTML>
<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#ss, .del_variant{
cursor: pointer;
}
*!*
.control-group:nth-child(1) .del_variant{
display: none;
}
*/!*
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document)
.ready(function () {
var variant = $('#uzz')
.clone(true);
$('#ss')
.click(function () {
$(variant)
.clone(true)
.appendTo('#variants')
.fadeIn('slow')
.find("input[name*=name]")
.focus();
});
$(document)
.on('click', 'a.del_variant', function () {
$(this)
.parents(".control-group")
.remove();
});
});
</script>
</head>

<body>
<div id="variants">
<div class="control-group" id="uzz">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
</div>
</div><span id="ss">Добавить вариант</span>
</body>

</html>

KEMPZOR
11.03.2017, 19:06
Diphenyl Oxalate,
<!DOCTYPE HTML>
<html>

<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#ss, .del_variant{
cursor: pointer;
}
*!*
.control-group:nth-child(1) .del_variant{
display: none;
}
*/!*
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document)
.ready(function () {
var variant = $('#uzz')
.clone(true);
$('#ss')
.click(function () {
$(variant)
.clone(true)
.appendTo('#variants')
.fadeIn('slow')
.find("input[name*=name]")
.focus();
});
$(document)
.on('click', 'a.del_variant', function () {
$(this)
.parents(".control-group")
.remove();
});
});
</script>
</head>

<body>
<div id="variants">
<div class="control-group" id="uzz">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" placeholder="Username" name="name[]"> <a class="del_variant">X</a>
</div>
</div>
</div><span id="ss">Добавить вариант</span>
</body>

</html>


Точно, оказалось достаточно просто.
Подскажите ещё один момент, например у меня есть не 1 а 4 input. Первые три это текстовые строки, четвертая строка для числа. Как мне при вводе только в первый блок и нажатию добавить, добавляло информацию в последующий создаваемый блок ну и суммировало четвёртый ? Подскажите пожалуйста.

рони
11.03.2017, 19:11
Как мне при вводе только в первый блок и нажатию добавить, добавляло информацию в последующий создаваемый блок ну и суммировало четвёртый ?
не осилил

KEMPZOR
11.03.2017, 19:37
не осилил

ок, давай с одним.

Вот есть <input type="text" placeholder="Username" name="name[]">
нажимаю Добавить вариант, добавляется второй блок, третий и так далее. Задумка такая, в первый блок input вводишь число 3, далее (добавить вариант), создаётся блок с числом 3 в value, далее опять в первый блок input число 4, добавляется следующий блок с числом 4 в value. Ну и где нибудь рядышком <p id="summa"></p>, который выводит в сумме значения name="name[]".

рони
11.03.2017, 19:49
KEMPZOR,
не понимаю, но посмотрите тут Динамическое создание поля ввода и кнопок Сохранить Удалить + Сумма строк с редактированием данных (http://javascript.ru/forum/dom-window/48296-dinamicheskoe-sozdanie-polya-vvoda-i-knopok-sokhranit-udalit-2.html#post319377)

KEMPZOR
11.03.2017, 19:59
KEMPZOR,
не понимаю, но посмотрите тут Динамическое создание поля ввода и кнопок Сохранить Удалить + Сумма строк с редактированием данных (http://javascript.ru/forum/dom-window/48296-dinamicheskoe-sozdanie-polya-vvoda-i-knopok-sokhranit-udalit-2.html#post319377)

Да Рони, именно такая задумка, спасибо за наводку.

KEMPZOR
13.03.2017, 13:02
KEMPZOR,
не понимаю, но посмотрите тут Динамическое создание поля ввода и кнопок Сохранить Удалить + Сумма строк с редактированием данных (http://javascript.ru/forum/dom-window/48296-dinamicheskoe-sozdanie-polya-vvoda-i-knopok-sokhranit-udalit-2.html#post319377)


Эх, что то не выходит то что задумал.

Вот по примеру сделал только вместо input подставил текст.

<div id="variants">
<div class="control-group uzz">
<label class="control-label">Username</label>
<div class="controls">
<p id="type_jaluzis1" class="clone_element"></p>
<p id="type_vidshtor1" class="clone_element"></p>
<p id="type_material_inf1" class="clone_element"></p>
<p id="type_name_tkan1" class="clone_element"></p>
<p id="type_shirina_visota1" class="clone_element"></p>
<p id="type_itogo_inf1" class="clone_element"></p>
<a class="del_variant">X</a>
</div>
</div>
</div>
<input type="button" id="test_button_text" name="btnz" value="Добавить"/>

Есть скрытые инпуты, в которых храниться меняющаяся информация.
<input id="type_jaluzis" name="from_form_inf" type="hidden" value="Информация1" />
<input id="type_vidshtor" name="from_form_inf" type="hidden" value="Информация2" />
<input id="type_material_inf" name="from_form_inf" type="hidden" value="Информация3" />
<input id="type_name_tkan" name="from_form_inf" type="hidden" value="Информация4" />
<input id="type_shirina_visota" name="from_form_inf" type="hidden" value="Информация5" />
<input id="type_itogo_inf" name="from_form_inf" type="hidden" value="Информация6" />

Этот код клонирования элемента по нажатию на кнопку "Добавить".
$(document)
.ready(function () {
var variant = $('.uzz')
.clone(true);
$('#test_button_text')
.click(function () {
$(variant)
.clone(true)
.appendTo('#variants')
.fadeIn('slow')
.find(".clone_element")
.focus();
});
$(document)
.on('click', 'a.del_variant', function () {
$(this)
.parents(".control-group")
.remove();
});
});



Этот код по нажатию на кнопку #test_button_text задает переменные, которые потом выводятся в своём <p id=""></p>
$(document).ready(function(){
$("#test_button_text").on("click" ,function(){
var divjal = $("#type_jaluzis").val();
var divvid =$("#type_vidshtor").val();
var divmat =$("#type_material_inf").val();
var divname =$("#type_name_tkan").val();
var divshirvis =$("#type_shirina_visota").val();
var divitogo =$("#type_itogo_inf").val();
$("#type_jaluzis1").html(divjal);
$("#type_vidshtor1").html(divvid);
$("#type_material_inf1").html(divmat);
$("#type_name_tkan1").html(divname);
$("#type_shirina_visota1").html(divshirvis);
$("#type_itogo_inf1").html(divitogo);

});
})
Не получается эти два кода объеденить, чтобы по нажатию на кнопку #test_button_text создавало новый объект и присваивало этому объекту текущие значения input hidden value на момент клика.

Есть какие размышления ?

Я так понимаю что нужно не клонировать элементы, а создать их средствами скрипта. ?