Просмотр полной версии : Генерация и удаление
Подскажите, вот есть код..
       <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>
При нажатии на ДОБАВИТЬ ВАРИАНТ,..все, оке..добавляется, но вот при тыки на Х работает только первый вариант...Как сделать что бы при нажатии на против каждого работало именно для него?
Как сделать что бы при нажатии на против каждого работало именно для него?
Используй ссылку на "кликнутый" элемент - this...
EleGant,
 22 строка начало $(document).on('click', далее по документации и думайте что удалять
Используй ссылку на "кликнутый" элемент - this...
$(this).remove(); });
Сделал, так, стал удаляться только X в первом инпуте.
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>
Сделал, так, стал удаляться только X в первом инпуте.
А на "дальше" уже соображалки не хватило? :)
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)'
Diphenyl Oxalate,
 а как решить не меняя ничего в скрипте?
Diphenyl Oxalate
09.03.2017, 19:33
рони, заинтриговали. Не знаю.
Diphenyl Oxalate,
 как сделать кнопку закрыть только для второго и последующих
 может это вам подскажет решение.
Diphenyl Oxalate,
следущая подсказка не только в скрипте ничего не менять, но и в body.
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>
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. Первые три это текстовые строки, четвертая строка для числа. Как мне при вводе только в первый блок и нажатию добавить, добавляло информацию в последующий создаваемый блок ну и суммировало четвёртый ? Подскажите пожалуйста.
Как мне при вводе только в первый блок и нажатию добавить, добавляло информацию в последующий создаваемый блок ну и суммировало четвёртый ? 
не осилил
не осилил
ок, давай с одним.
Вот есть <input type="text" placeholder="Username" name="name[]">
нажимаю Добавить вариант, добавляется второй блок, третий и так далее. Задумка такая, в первый блок input вводишь число 3, далее (добавить вариант), создаётся блок с числом 3 в value, далее опять в первый блок input число 4, добавляется следующий блок с числом 4 в value. Ну и где нибудь рядышком <p id="summa"></p>, который выводит в сумме значения name="name[]".
KEMPZOR,
 не понимаю, но посмотрите тут Динамическое создание поля ввода и кнопок Сохранить Удалить + Сумма строк с редактированием данных (http://javascript.ru/forum/dom-window/48296-dinamicheskoe-sozdanie-polya-vvoda-i-knopok-sokhranit-udalit-2.html#post319377)
KEMPZOR,
 не понимаю, но посмотрите тут Динамическое создание поля ввода и кнопок Сохранить Удалить + Сумма строк с редактированием данных (http://javascript.ru/forum/dom-window/48296-dinamicheskoe-sozdanie-polya-vvoda-i-knopok-sokhranit-udalit-2.html#post319377)
Да Рони, именно такая задумка, спасибо за наводку.
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 на момент клика.
Есть какие размышления ?
Я так понимаю что нужно не клонировать элементы, а создать их средствами скрипта. ?
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot