Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: new_coder от 20 Июля 2007, 14:12:59

Название: динамическая форма
Отправлено: new_coder от 20 Июля 2007, 14:12:59
в зависимасти от значения селекта JavaScript
добавляет поля к форме


function CheckLK(Item)
{

var element = document.getElementById(Item);
element.innerHTML = "";

var addform = ""+
""+
""+
""+
""+
""+
""+
""+
""+
"
Код партнера (только для партнеров фирмы 1С)
Название организации
Регистрационный номер комплекта:
Название конфигурации
Полный номер версии:
";

selectedgroup1 = document.fsend.ТемаЖалобы.options[document.fsend.ТемаЖалобы.selectedIndex].value;
selectedgroup2 = document.fsend.КомуПисьмо.options[document.fsend.КомуПисьмо.selectedIndex].value;

if(selectedgroup1 == "Линия консультаций")
{
return element.innerHTML = addform;
}

if(selectedgroup2 == "на Линию консультаций")
{
return element.innerHTML = addform;
}
}
 

но когда отсылаешь форму
в скрипт добавленные параметры не  приходят.
почему?
Название: динамическая форма
Отправлено: html_coder от 20 Июля 2007, 15:13:35
Цитировать
new_coder:

document.fsend.ТемаЖалобы.options

document.fsend.КомуПисьмо.options



Интереса ради спрашываю - и это произведение исскуства работает?
Название: динамическая форма
Отправлено: new_coder от 20 Июля 2007, 15:31:19
работает.

а по сути вопроса помоч не?
Название: динамическая форма
Отправлено: html_coder от 20 Июля 2007, 15:55:45
Ну все-таки это произведение искусства я убрал бы, название переменных русскими буквами это конечно шедевр.

Цитировать
new_coder:
а по сути вопроса помоч не?



По сути вопроса после добавления нужно залезть в код и посмотреть что там добавилось, суть проблемы я думаю будет ясна сразу

Сделать это можно например если для FireFox использовать расширение
View Source Chart (https://addons.mozilla.org/en-US/firefox/addon/655)
Название: динамическая форма
Отправлено: brainkiller от 20 Июля 2007, 16:10:28
Грабли-то известные! Вместо ".innerHTML=" при добавлении элементов форм надо использовать createElement() и appendChild().
Название: динамическая форма
Отправлено: new_coder от 20 Июля 2007, 16:18:40
поставил View Source Chart. Все присутствует как и должо.
Название: динамическая форма
Отправлено: new_coder от 20 Июля 2007, 16:28:16
brainkiller кинь пожалуйста ссылку на инфу поэтому поводу.

и вообще createElement() appendChild() innerHTML это к чему относиться

к JaveScript, DOM, HTML5.
Название: динамическая форма
Отправлено: html_coder от 20 Июля 2007, 16:39:15
Цитировать
new_coder:
brainkiller кинь пожалуйста ссылку на инфу поэтому поводу


Вот здесь достаточно ссылок

http://www.google.ru/search?q=document.CreateElement&hl=ru&lr=

http://www.google.ru/search?hl=ru&newwindow=1&q=appendChild&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=


Цитировать
new_coder:
и вообще createElement() appendChild() innerHTML это к чему относиться

к JaveScript, DOM, HTML5.


Это DOM
Название: динамическая форма
Отправлено: new_coder от 23 Июля 2007, 14:25:42
Получаеьтся такая фигня

Внутри тега FORM присутствуют теги TABLE, DIV оформляющие элементы ввода (INPUT).

если делать appendChild к форме, то парметры приходят в скрипт, но форма получается кривой,
а если appendChild  делать к div то фома отображается корректно, а параметров нет.

как победить???
Название: динамическая форма
Отправлено: brainkiller от 23 Июля 2007, 16:56:14
new_coder
Видимо, делать верстку семантической. В любом случае, хуже от этого не будет.
Название: динамическая форма
Отправлено: new_coder от 23 Июля 2007, 17:12:04
поясните

Цитировать

делать верстку семантической


я дорабатываю готовый сайт,
менять полностью стилб верстки страниц нет возможности
Название: динамическая форма
Отправлено: brainkiller от 23 Июля 2007, 21:15:02
Попробуйте тогда хотя бы форму избавить от лишнего кода, отвечающего исключительно за оформление.
Название: динамическая форма
Отправлено: new_coder от 24 Июля 2007, 16:21:57
переверстал страницу и теперь если внутри тега form делать appendchild  к форме вложенного елемента (div) с добавленными тегами input то все работает нормально во всех браузерах, но если вложенный тег table, то в IE  перестаёт добавлятся?
Название: динамическая форма
Отправлено: brainkiller от 24 Июля 2007, 21:41:30
Тогда избавьтесь от таблицы вообще! Оформите форму при помощи CSS.

[OFF]Хороший пример приведен в файлах к этой (http://www.williamspublishing.com/Books/978-5-8459-1199-5.html) книге. Смотрите шестую главу внутри архива.[/OFF]
Название: динамическая форма
Отправлено: new_coder от 25 Июля 2007, 09:48:19
спасибо за ссылку!
да, походу с помощью CSS можно творить чудеса,
но как с поддержкой разных браузеров?

всетаки таблицы работают всегда и везде.

а проблему с таблицей тв IE решил, нужно было добавить tbody.
Название: динамическая форма
Отправлено: hanslinger от 25 Июля 2007, 11:07:24
Ребята.
Какого хуя противопоставлять «таблица» и «CSS»? Это что, конкурирующие предприятия? Что за бред? Яндекс весь на таблицах, и CSS там тонны.
Холивары таблица/див устраивают дефективные, которые не могут толком ничего сделать ни с помощью первого, ни с помощью второго. Или тупые фанаты-берсерки, которые откровенно табличные вещи делают, потея и седея, дивами. Потому что «таблица — прошлый век».
Глаза б мои не видели.
Название: динамическая форма
Отправлено: hanslinger от 25 Июля 2007, 11:10:18
Это я все к чему.
Формы обязательно нужно форматировать. Потому что, как правило, это самый сложный элемент взаимодействия пользователя с сайтом. И хорошее оформление может сократить время, убитое на заполнение формы, в разы.
Но это же не значит, что их нельзя оформить с помощью таблиц!
Название: динамическая форма
Отправлено: brainkiller от 25 Июля 2007, 13:15:46
При чем тут холивары и "таблицы - прошлый век"? Ничего подобного, осмелюсь заметить, здесь не прозвучало! У человека были проблемы с работой формы, связанные с таблицами - я всего лишь предложил альтернативный способ и дал ссылку на пример. А - цитирую - "какого хуя" Вы тут углядели признаки холивара, это уж у Вас спросить нужно.

Да, форму можно оформить при помощи таблиц; да, можно и без них. Если в каком-то конкретном случае они мешают, то почему бы их не убрать?
Название: динамическая форма
Отправлено: hanslinger от 25 Июля 2007, 14:51:50
Извини, если это выглядит как наезд. Это не он :-)
Наболело просто. :(
Название: динамическая форма
Отправлено: brainkiller от 25 Июля 2007, 18:55:29
Понимаю. И не осуждаю. :)
Название: динамическая форма
Отправлено: new_coder от 06 Августа 2007, 17:57:18
продолжение темы.

динамически добавляю несколько тегов input типа radio c одинаковым
именем. В FF работают как переключатели в IE нет.
В IE даже точка при клике не отображается.

не могу разобраться, в чем косяк.
Название: динамическая форма
Отправлено: new_coder от 22 Августа 2007, 10:12:50
всем спасибо за участие.
подвод итогов:

1. Нельзя располагать теги форм в таблице не в теге TD
2. Для добавления элементов к формам использовать createElement и appendChild
3. При добавлении элементов внутри таблицы необходимо использовать тег TBODY, и новые ячейки добавлять к нему. (для IE)
4. При создании элемента INPUT типа RADIO для IE необходимо использовать:
   element = document.createElement(\'\'),
   так как IE не может установит свойство NAME после создания
   элемента, и соответственно переключателями с одним именем не будут одной группой.
5. Для добавления обработчика события к созданным элементам использовать:
   для IE - element.attachEvent(\'on\' + event, fn),
   где event - (\'click\', ...);
      fh - имя функции без кавычек и параметров ( MyFun )
   для FF - element.addEventListener(event, fn, false).
   остальные браузеры - element[\'on\' + event] = fn.
6. Если возникает ситуация когда объекты создаются по событиям,
   возникающим очень быстро друг за другом, то IE падает с ошибкой.
   Избежать возможно ручным удалением добавленных обработчиков событий.
   Соответственно (detachEvent, removeEventListener, element[...] = \'\';).
7. Использовать всегда:
document.getElementById;
document.createElement;
appendChild;
setAttribute;
Название: динамическая форма
Отправлено: CGVictor от 22 Августа 2007, 11:01:34
new_coder
[m] Спасибо за итоги, весьма ценно.
Название: динамическая форма
Отправлено: brainkiller от 22 Августа 2007, 14:14:58
CGVictor
прикрутить бы их куда-нибудь в FAQ?
Название: динамическая форма
Отправлено: Zhil от 24 Августа 2007, 13:32:15
А нельзя ли попросить вывесить образец кода?
Название: динамическая форма
Отправлено: CGVictor от 24 Августа 2007, 15:16:03
brainkiller
Уже, в мое сообщение (вниз) запихнул.