Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение полей формы после изменения структуры, изменение DOM и submit 
:(
    Опции темы
patience
Дата 24.3.2008, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



есть форма

Код

<form enctype="multipart/form-data" action="index.php" method="post">
...
 <div id="cats">
   <input type="radio" name="category" value="1" checked="checked"/>Текст<br />
   <input type="radio" name="category" value="2"/>Текст<br />
 </div>           
...
<input type="submit" name="submit_button" value="Добавить" /> 
</form>


при помощи JS выполняются асинхронные запросы на сервер, результат запросов html-код, который  впихивается в <div id="cats">
html-код представляет собой поля формы, которые обрабатываются после отправки

Проблема в том, что если не прибегать к JS,  отправлять форму в таком виде как она была первоначально получена от сервера - всё ок. т.е. получим поле category, а если при помощи JS изменить содержимое <div id="cats"> после отправки - добавленные поля нельзя будет получить

содержимое <div id="cats"> изменяется при помощи JS 
Код

    var html_receiver = document.getElementById("cats");    
    html_receiver.innerHTML =html;


Работает правельно только в IE
В FireFox отказывется, возможно это происходит из-за строчки html_receiver.innerHTML =html; Как можно обойти? без последовательного добавления каждого элемента к контейнеру, т.к. элементов много и они разные...

PM MAIL   Вверх
IDVsbruck
Дата 24.3.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Мне сложно с терминологией, поэтому опишу своими словами ...
При такой вставке кода (через innerHTML) структура DOM-документа сразу не меняется, поэтому нет обращения к этой ветви. Код надо туда инкапсулировать буквально.
Сделать это можно следующим стандартным скриптом:

Код
...
html_receiver.innerHTML = html;
run_script(html_receiver);
...

function run_script(_div) {
    var divContent = _div.childNodes;
    for (var i = 0; i < divContent.length; i++) {
        requestItem = divContent.item(i);
        if (requestItem.tagName)
            if (requestItem.tagName.toUpperCase() == 'SCRIPT') eval(requestItem.text);
        else run_script(requestItem);
    }
}

PM MAIL   Вверх
patience
Дата 24.3.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



Цитата

Код надо туда инкапсулировать буквально.
Сделать это можно следующим стандартным скриптом:


тоже самое.

Убрал innerHtml, использую стандартные методы dom  
Код

    var i = document.createElement('input');
    i.setAttribute('type', "radio");
    i.setAttribute('name', 'test');
    i.setAttribute('checked', 'checked');
    html_receiver.appendChild(i);
    html_receiver.appendChild(document.createTextNode('Test'));


всё равно после отправки формы на сервер не получаю поле 'test' 


PM MAIL   Вверх
IDVsbruck
Дата 24.3.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Ну, тогда, плиз, весь код клиента в студию, плиз ...
PM MAIL   Вверх
patience
Дата 25.3.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



создал простенькую тестовую страницу - на ней всё работало ок.
начал капать у себя..  и заметил, что  открыл не там тег <form>
Код

<table>
  <table>
         <form.. >
  </table>           
  <table>
      <input type="submit" name="submit_button" value="Добавить" />
 </table>
</form>


 smile  

IDVsbruck,  спасибо за помощь )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.