Динамически добавленные элементы формы не размещены в IE 9 - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть форма, которая используется для проведения теста. Пользователь вводит вопрос и предоставляет тип вопроса и варианты ответа, а также сохраняет вопрос. Что пошло не так, так это то, что когда пользователь пишет одну опцию и нажимает кнопку «Добавить в опции», содержимое текстового поля для опций добавляется в DOM для отображения в качестве ответа на вопрос. Это все работало хорошо, пока IE9 не было.
Когда пользователь нажимает кнопку «Добавить к параметрам», опция отображается в DOM, но в IE9 значение не добавляется.
Функция, которая добавляет опцию к DOM:

    var tbl = document.getElementById('tbl');
    var lastRow = tbl.rows.length;
    var iteration = lastRow;
    var row = tbl.insertRow(lastRow);
    arr[ind] = iteration;

    var cellLeft1 = row.insertCell(0);
    var cellLeft2 = row.insertCell(1);
    var cellLeft3 = row.insertCell(2);
    if(document.crt_question.test_ans_view[0].checked)
    {   
        if(document.crt_question.test_ans_choice.value=="0") // MCQ with Single Answer (Radio Buttons)
        {

            var op_val=document.crt_question.test_answer.value;
            var words=op_val.split("");             
            op_val='';

            for(i=0;i<words.length;i++)
            {
                op_val = op_val + words[i].replace('"',"'");
            } 
            cellLeft1.innerHTML = '<div id="button_div'+ind+'" class="dom_"><input type="radio" name="button_'+ind+'" id="button_'+ind+'" value="'+ind+'" ></div>';
            cellLeft2.innerHTML = '|<input type="image" src="../../_images/view_del.gif" onclick="return removeRowFromTable('+ ind +')" />|';

            var newOption = document.createElement("input"); 
            newOption.name = "test_answer"+ind+"";
            newOption.type = "hidden";
            newOption.value = op_val;

            var newOption2 = document.createElement("input"); 
            newOption2.name = "view_option"+ind+"";
            newOption2.type = "text";
            newOption2.value = op_val;              
            cellLeft3.appendChild(newOption); 
            cellLeft3.appendChild(newOption2); 
            ind++;
            remove++;               
        }           
    }

Таблица, к которой добавляются параметры:

  <table id="tbl" border="0"  style="padding-left:70px;">
  <tr>
    <td  align="left"></td>
    <td  align="left" ></td>
    <td  align="left"></td>                                                                                                                                     
</tr>
</table>    

В функции Top я не получаю значение либо из скрытого значения, либо из поля ввода типа TEXT, когда форма отправлена. Это работает в FF и IE8. Кто-нибудь может попасть на эту вещь?

ПРИМЕЧАНИЕ. Этот код выполняется в файле, который включен через IFRAME.

Ответы [ 5 ]

3 голосов
/ 21 сентября 2011

Эта проблема была полностью из-за стандартов IE9.В представлении совместимости ошибка была удалена.Так что, если кто-то сталкивается с этим типом проблемы, просто добавьте следующую строку в разделе заголовка вашего документа: <meta http-equiv="X-UA-Compatible" content="IE=8" />

2 голосов
/ 29 декабря 2011

Возможно, у вас неправильный HTML.Например, случайная возможность, которая была симптомом этого и сработала для меня: попробуйте изменить <div> на <span>.

У меня возникла та же проблема с использованием innerHTML для вставки HTMLданные в div, но IE9 не распознает его.Даже если бы я попытался просто предупредить значение поля, оно не знало, что оно существует, хотя оно отлично работало на IE8, Chrome и т. Д. Но я изменил <div> на <span> и вуаля, он прекрасно понял.

Как оказалось, у меня был какой-то неправильный синтаксис HTML.В частности, мой тег <form> был внутри тега <p>.В отличие от всех других браузеров, IE9 не прощал этого и понимал мои вставленные элементы только тогда, когда они были внутри p > form > span вместо p > form > div.Конечно, реальным решением было исправить мою структуру HTML.Затем IE9 понял <div> так же, как и <span>.

1 голос
/ 08 сентября 2011

Когда я тестирую ваш код в IE9, он включает в себя поля в данных POST.

Fiddle: http://jsfiddle.net/Guffa/AeBdd/

Я заново создал форму и поля из того, что нужно сценариям,Вы должны проверить, есть ли какие-либо существенные различия в форме и полях, которые у вас есть.

Обратите внимание, что мне пришлось добавить свойство crt_question к объекту документа, так как форма не добавляется автоматически, либо сэтот идентификатор или имя.Вы визуализируете свою страницу в режиме Quirks?Это может вызвать некоторые проблемы.

0 голосов
/ 21 декабря 2013

Та же проблема, проблема в том, что в документе отсутствовал тег body.

0 голосов
/ 13 июня 2013

Я только что столкнулся с этой же проблемой.Только в ie9 динамически загруженные входные элементы AJAX не публиковались при отправке - созданные при загрузке входные данные были бы опубликованы нормально.Для меня проблемой стала отсутствующая открывающая метка тела.

...