Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Продублировать элементы управления формы при нажатии на кнопку
 
 автор: OLi   (26.03.2011 в 15:19)   письмо автору
 
 

Необходимо по клику создать копию формы со всему элементами, но с именами отличными от 1-й формы
Например:
1-я Форма:
<input type="text" name="adres" >
<input type="text" name="contact" >
<a hre="">Добавить еще</a>
2-я Форма:
<input type="text" name="adres2" >
<input type="text" name="contact2" >
или рациональнее прописать доя имен adres[]

  Ответить  
 
 автор: psychomc   (26.03.2011 в 15:27)   письмо автору
 
   для: OLi   (26.03.2011 в 15:19)
 

поместите форму в контейнер и используйте функцию Clone
или как вариант просто сделайте копию объекта на подобии:

var new_obj = obj;
var cont = document.getElementById('cont');
cont.appendChild(new_obj);


как удобнее решайте сами

*имена думаю понятно как менять, но действительно рациональнее конечно прописать address[]

  Ответить  
 
 автор: OLi   (26.03.2011 в 17:39)   письмо автору
 
   для: psychomc   (26.03.2011 в 15:27)
 

Смысл ясен, но нужен расширенный пример...в нете по clone мало что нашел

  Ответить  
 
 автор: psychomc   (27.03.2011 в 01:39)   письмо автору
 
   для: OLi   (26.03.2011 в 17:39)
 

ну раз так - ловите

<html>
<head>
    <script>
        function cloneForm() {
            // форма
            var form = document.forms[0];
            // клонируем
            var new_form = form.cloneNode(true);
            // родитель формы
            var parent = form.parentNode;
            // вставляем новую форму в родительский контейнер
            parent.appendChild(new_form);
        }
    </script>
</head>
    <body>
        <a href="#" onclick="cloneForm()">еще</a>
        <div>
            <form>
                <input type="text" name="address[]"/>
                <input type="text" name="contact[]"/>
            </form>
        </div>
    </body>
</html>

  Ответить  
 
 автор: OLi   (27.03.2011 в 13:15)   письмо автору
 
   для: psychomc   (27.03.2011 в 01:39)
 

Спасибо..а если не всю форму а отдельные элементы формы скопировать в <div id="се"></div>

  Ответить  
 
 автор: psychomc   (27.03.2011 в 13:37)   письмо автору
 
   для: OLi   (27.03.2011 в 13:15)
 

суть будет та же. только правильно обратитесь к первому контейнеру (который дублируем) и определите родителя (в который вставляем)

  Ответить  
 
 автор: OLi   (27.03.2011 в 14:18)   письмо автору
 
   для: psychomc   (27.03.2011 в 13:37)
 

Вот что у меня есть:
<div>Улица <input type="text" name="street[]" size="9"/></label><label>Дом <input id="v" type="text" name="house[]" size="5" /></label>
     <label>Квар. <input type="text" name="kvart[]" size="5" /></label></div>

 function cloneForm() { 
            // форма 
            var form =document.getElementById("v") 
            // клонируем 
            var new_form = form.cloneNode(true); 
            // родитель формы 
            var parent = form.parentNode; 
            // вставляем новую форму в родительский контейнер 
            parent.appendChild(new_form); 
        } 

При клике объект не создается....В данном случае родительский элемент будет <div>? или все такие label перекрывает?

  Ответить  
 
 автор: psychomc   (27.03.2011 в 14:55)   письмо автору
 
   для: OLi   (27.03.2011 в 14:18)
 

тогда вот так

<html> 
<head> 
    <script> 
        function cloneForm() { 
            // форма
            var form = document.forms[0]; 
            // контейнер
            var div = form.getElementsByTagName('div')[0];
            // клонируем 
            var new_div = div.cloneNode(true); 
            // вставляем
            form.appendChild(new_div); 
        } 
    </script> 
</head> 
    <body> 
        <a href="#" onclick="cloneForm()">еще</a> 
        <form>
            <div>
                <label>Улица</label>
                <input type="text" name="street[]" size="9"/>
                <label>Дом</label>
                <input id="v" type="text" name="house[]" size="5" />
                <label>Квар.</label>
                <input type="text" name="kvart[]" size="5" />
            </div> 
        </form>
    </body> 
</html> 


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

  Ответить  
 
 автор: OLi   (27.03.2011 в 15:10)   письмо автору
 
   для: psychomc   (27.03.2011 в 14:55)
 

а если заменить var div = form.getElementsByTagName('div')[0];
на var div = form.getElementsById('v')[0];

  Ответить  
 
 автор: psychomc   (27.03.2011 в 15:43)   письмо автору
 
   для: OLi   (27.03.2011 в 15:10)
 

думаю, Вам все-таки стоит почитать книги по javascript и досконально разобраться что из себя представляет DOM.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования