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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Opera не отправляет в $_POST данные поля в div 
:(
    Опции темы
UnknownCoder
Дата 29.8.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день, господа разработчики.
Что есть:
Есть форма. В ней идет такая конструкция
Код

<div  style="display:block" id="dropdownlists">

</div>

Так же, есть такая функция
Код

var listcount = 0;
function generateList(id)
{
    
    var GeneratedList = '<div style="display:block" id="drop_down_'+listcount+'">\n';
    GeneratedList += ' <select name="AddCategory['+listcount+']" class="">\n';
    
        GeneratedList += '<option value="1">first</option>\n';
    
        GeneratedList += '<option value="2">second</option>\n';
    
        GeneratedList += '<option value="3">third</option>\n';
    
        
    GeneratedList +='</select>\n';
    
    
GeneratedList +='<img src="http://site.ru/images/cross.png" width="16" height="16" vspace="0" hspace="3" /><a href="javascript:void(0);" onclick="javascript: deleteList('+listcount+');">Удалить</a></p>\n';

GeneratedList +='<br><br></div>';
    
    //$("#dropdownlists").append(GeneratedList);
    var SomeElement = document.getElementById("dropdownlists");
    content = SomeElement.innerHTML;
    SomeElement.innerHTML = content+GeneratedList;
    listcount++;
}


Эта функция добавляет в div dropdownlists новый div с именем drop_down_0,drop_down_1 и т.д.
В чем проблема
В FireFox после поста формы в $_POST видятся эти поля AddCategory. В Opera нет. Как видите, изначально я добавлял список при помощи JQuery, потом подумал что возможно из за этого глючить опера. Оказалось нет. Так же добавил к дивам свойство style="display:block". Тоже не работает ... Ах, да, чуть не забыл.Эти div'ы точно находятся в тэге <form>

Заранее благодарен за ответ. 

Это сообщение отредактировал(а) UnknownCoder - 29.8.2007, 16:04
PM MAIL   Вверх
UnknownCoder
Дата 29.8.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну что, никто не знает в чем дело? =( Помогите, плз
PM MAIL   Вверх
Ghirik
Дата 29.8.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуйте заменить дивы параграфами или pre, как бы, уточнить дивы виноваты или что ещё.
Вообще, наверное, Опера не понимает, что дивы находятся внутри формы, посмотрите, не заданы ли для дивов стили. Она может принять их за слои.

Это сообщение отредактировал(а) Ghirik - 30.8.2007, 04:27


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
SelenIT
Дата 30.8.2007, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(UnknownCoder @  29.8.2007,  16:03 Найти цитируемый пост)
Эти div'ы точно находятся в тэге <form>

А сам тег <form> случайно не находится в неподобающем месте тега <table>?

Цитата(Ghirik @  29.8.2007,  22:53 Найти цитируемый пост)
посмотрите, не заданы ли для дивов стили. Она может принять их за слои.

Ghirik, по-вашему, стили могут приводить к формированию различного DOM-дерева при оодной и той же разметке, я верно понимаю? Для меня это что-то новенькое. Нельзя ли привести простейший пример, где и когда такое происходит?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ghirik
Дата 30.8.2007, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну блин, что, обязательно думать прежде, чем писать? smile  smile 
Я как бы так подумал, если див имеет Z-индекс это уже слой, и физически, находясь в форме, он может отображаться в другом месте. Я уже имел опыт с Оперой на тему её "продуманности". Не хочет ведь она кэшировать невидимые элементы. Может и здесь  так же.
А что, после разметки DOM- дерево не поменять? А где тогда создаются динамические объекты, или именно стилями не поменять?

Это сообщение отредактировал(а) Ghirik - 30.8.2007, 09:33


--------------------
Отдадим всё клиенту, пускай его машина мучается...

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


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(Ghirik @  30.8.2007,  09:09 Найти цитируемый пост)
обязательно думать прежде, чем писать?

Имхо, да;)


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ghirik
Дата 30.8.2007, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



SelenIT, я там редактировал сообщение, Вы ответили.

Что нельзя перед загрузкой тела документа назначить стиль дивам?


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
SelenIT
Дата 30.8.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Ghirik, насколько я знаю, абсолютное позиционирование на DOM-дерево не влияет - если div, к примеру, в коде находится внутри ячейки таблицы, он останется ее child-ом, куда бы его не позиционировали - хоть на край страницы, хоть за край. Менять DOM-дерево, разумеется, можно в любой момент (конечно, когда оно уже есть;), но только явными вызовами appendChild и т.п. методов либо innerHTML - стилям, насколько мне известно, это неподвластно (IE-шные expressions и behaviors не в счет, это все равно JS по сути).

Но вот про скрытые элементы и странности Оперы в их отношении я как-то действительно не подумал, надо будет на досуге поэкспериментировать - это, имхо, не исключено, от Оперы всего можно ждать...



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Ghirik
Дата 30.8.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот, я специально не удаляю пример. Изображения загружаются в элементы, со свойством display: none. Везде нормально, а Опера умничает. Вроде как, невидимые, дак зачем грузить.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

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


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Забавно... действительно натолкнулся на "феномен": невидимые динамические поля добавляются к форме и через DOM, и через innerHTML, но... изменение innerHTML словно "стирает" value элементов, ранее добавленных через DOM! Странный эффект наблюдается не только в Опере, но и в FF, что совсем меня ставит в тупик. Вот пример:
Код

<script type="text/javascript">
var counter = 0;
function addDOM(ob) {
   var inp = document.createElement('input');
   inp.name = 'dom'+(counter++);
   inp.type = 'text';
   inp.value = "В порядке?";
   inp.style.display = 'none';
   ob.appendChild(inp);
}
function addInnerHTML(ob) {
   ob.innerHTML += '<input type="text" name="inner'+(counter++)+'" value="В порядке?" style="display:none" />';
}
</script>
<form action="info.php">
    <input type="text" name="one" value="В порядке" />
    <input type="text" name="two" value="В порядке?" style="display:none" />
    <input type="button" value="Добавить через DOM" onclick="addDOM(this.form)" />
    <input type="button" value="Добавить через innerHTML" onclick="addInnerHTML(this.form)" />
    <input type="submit" />
</form>

Если добавлять поля только первой кнопкой - все отлично создается и отправляется. Если же создавать поля то одним, то другим способом, то значения сохранят только поля, добавленные через innerHTML, и поля, добавленные через DOM после последнего изменения innerHTML формы. Остальные динамические поля передадутся с пустыми значениями. Вот так фокус...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alx
Дата 30.8.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

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



ого.. в моем тулките такие же лаги в опере(


--------------------
PM MAIL WWW ICQ   Вверх
Ghirik
Дата 31.8.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Забавно... действительно натолкнулся на "феномен": 


Я где то читал рекомендацию не использовать совместно innerHTML и createElement, но тогда, отмел это за ненадобностью. Но у автора глючит только в Опере.... И он где-то потерялся. smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

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


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

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



2 [SelenIT, Alx]
пользуемся правильными методами
Код

<html>
<head>
<script type="text/javascript">
var counter = 0;
function addDOM(ob) {
   var inp = document.createElement('input');
      ob.appendChild(inp);
        inp.setAttribute('name','dom'+(counter++));
        inp.setAttribute('type','text');
        inp.setAttribute('value','В порядке?');
}
function addInnerHTML(ob) {
   ob.innerHTML+='<input type="text" name="inner'+(counter++)+'" value="В порядке?" />';
}
</script>
</head>
<body>
<input type="button" onclick=alert(document.body.innerHTML)>
<form action="info.php">
    <input type="text" name="one" value="В порядке" />
    <input type="text" name="two" value="В порядке?" style="display:none" />
    <input type="button" value="Добавить через DOM" onclick="addDOM(this.form)" />
    <input type="button" value="Добавить через innerHTML" onclick="addInnerHTML(this.form)" />
    <input type="submit" />
</form>
</body>
</html>


Это сообщение отредактировал(а) dstorm81 - 31.8.2007, 10:15


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

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


Опытный
**


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

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



Круто, спасибо. 
Так, ради информции. Более короткое присвоение атрибутов можно делать? Типа, как стилей 
Цитата

node.style.cssText




--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
dstorm81
Дата 31.8.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

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



node.className='my_class_name_definished_in_style_css'


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

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


 




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


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

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