[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление полей к форме
pavbat
Существует таблица, в каждой строке которой в одной из ячеек находится поле формы (инпут).
Есть надобность добавлять новую строку в которой так же должно находится поле формы.
Я реализовал это с помощью insertRow, insertCell и innerHTML.
Но данные с новых полей не отправляются на сервер.
Пытаюсь использовать createElement и appendChild, но не получается. Если бы было без таблицы а на <div>, то все понятно, а как с новой строкой и новым полем в ней не пойму.
Помогите реализовать!



Спустя 20 часов, 1 минута, 4 секунды (2.09.2007 - 11:39) Секстурист написал(а):
Чтобы данные отправлялись нужны не только поля формы, но и сама форма.
Также у каждого поля должно быть имя (<input name="name" ... >).

Спустя 1 час, 12 минут, 39 секунд (2.09.2007 - 12:52) pavbat написал(а):
Конечно же это есть.

В общем-то сделал уже используя createElement и appendChild.
Теперь все отправляется, но новая проблема: В IE Визуально не отображается новая строка, хотя новые данные присутствуют и отправляются на сервер.
В кратце синтаксис:

Инпут, ячейки и строка снала генерируем createElement ,
потом -

Ячейка1.appendChild(Инпут1);
Ячейка2.appendChild(Инпут2);

Строка.appendChild(Ячейка1);
Строка.appendChild(Ячейка2);

Таблица.appendChild(Строка);

Вот и все.
Помогите подправить код.

Спустя 1 час, 14 минут, 39 секунд (2.09.2007 - 14:06) vasa_c написал(а):
Полный нормальный код, пожалуйста.
Если под ячейками подразумевается ячейки таблицы, то JS здесь очень щипитильно к соблюдению стандартов, например, недопустимо <table><form><tr>...

Спустя 3 часа, 9 минут, 34 секунды (2.09.2007 - 17:16) pavbat написал(а):
Цитата(vasa_c @ 2.9.2007, 15:06) [snapback]26691[/snapback]
Полный нормальный код, пожалуйста.
Если под ячейками подразумевается ячейки таблицы, то JS здесь очень щипитильно к соблюдению стандартов, например, недопустимо <table><form><tr>...


Вобщем-то у меня получилось, все работает.
Полный код длинный (строка вставляется из дочернего окна в родительское), вот подрезанный вариант:

<script type="text/javascript">
<!--
function Fplus(form){
var w=window.opener.document.all.tab1; //Таблица находится в родителе
var N = w.rows.length; //Кол-во строк

w.insertRow(N); //Созаем строку
var tr =w.rows[N];
tr.onclick=Fcusor("tr"+N,"td"+N,"tx"+N,"txC"+N);
tr.id="tr"+N; // Идинтификатор строки

w.rows[N].insertCell(0); //Созаем ячейку
var td0=w.rows[N].cells [0];
td0.innerHTML ="00000530";
td0.className ="maintext";
td0.align="center";

w.rows[N].insertCell(1); //Созаем ячейку
var td1=w.rows[N].cells [1];
td1.innerHTML ="текст";

w.rows[N].insertCell(2);//Созаем ячейку
var td2=w.rows[N].cells [2];
td2.innerHTML ="текст";

w.rows[N].insertCell(3);//Созаем ячейку
var td3=w.rows[N].cells [3];
td3.align="right";

var in1=window.opener.document.createElement("INPUT");// Генерируем новое поле фрмы
in1.type="Text";
in1.value="32.98";
in1.id="txC"+N;
in1.onblur='Ftrcolor(tr'+N+',td'+N+',txC'+N+')';
in1.name="00000530newPozc";
in1.size="8";
in1.style.fontSize="11px";
in1.style.height="16px";
in1.style.margin="2px";
in1.style.color="#000000";
in1.style.textAlign="right";



td3.appendChild(in1); // Вставляем уже готовое поле формы в третью ячеку

window.close();
}
// -->

</script>


Теперь столкнулся со следующей проблемой: как правильно присвоить новой строке onclick=Fcusor("tr"+N,"td"+N,"tx"+N,"txC"+N);
Как указано вскрипте не катит, по-моему onclick обращается к текущему (дочернему) окну.

Спустя 21 минута, 17 секунд (2.09.2007 - 17:37) vasa_c написал(а):
Если вы определяете функцию в дочернем окне, то она свяжется через замыкание с контекстом этого окна и, соответственно, window в ней будет указывать на дочернее окно. Вы можете делать с этой функцией что угодно и повесить обработчиком на элемент другого окна, но связь с контекстом останется прежней.

Спустя 51 минута, 11 секунд (2.09.2007 - 18:28) pavbat написал(а):
Как же быть? Ведь дочернее окно после выполнения скрипта закрывается.

Спустя 1 час, 31 минута, 1 секунда (2.09.2007 - 19:59) vasa_c написал(а):
Определять функцию в родительском )


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.