innerHtml, IE7, input file

Devona

Новичок
innerHtml, IE7, input file

в форме есть поле file
onchange на нём добавление нового поля такого же типа. новые поля ложаться в div
в ФФ, опере, сафари всё нормально.
в ИЕ7 при добавлении нового поля значения предыдущих полей обнуляются.
подскажите плз как можно это обойти

код добавления поля:
PHP:
myDiv.innerHTML += '<input name="file_name'+count+'" type="file" id="file_'+count+'" onchange="javascript: checkThis(this);">';
 

est-in

Новичок
1. если попробовать создавать элементы и делать myDiv.appendChild(newInputTag);
не использовать innerHTML

2. сохранять все в переменную, а после myDiv.innerHTML = mystr;
 

Devona

Новичок
1) именно так делается делается для всего что не ИЕ. при таком добавлении элемента в ИЕ перестаёт работать onchange. вообще. ничего не происходит :) даже ошибка на странице не выводится.

2) если правильно понял - то в переменной хранить в записи полей и в итоге всё вывести махом. не подходит такой вариант потому как неизвестно конечное число таких полей.
 

kruglov

Новичок
Не делайте "+=", т.к. это буквально значит "взять, что есть, приклеить, полученное записать обратно". Курсивом выделена стадия, нам неподконтрольная.

Приделывайте через appendChild новый div, а в него уже пишите innerHTML.
 

Devona

Новичок
kruglov
спасибо за совет.
appendChild пробовал. при добавлении элемента таким образом перестаёт работать onchange вообще.

вопрос уже решился так:
PHP:
$('#file_'+count).after('<div><input name="file_name'+count2+'" type="file" id="file_'+count2+'" onchange="javascript: checkThis(this);"></div>');
всем спасибо за советы.
 

Devona

Новичок
PHP:
var a = new Element('input', { name: "file_name"+count, type: "file", id: "file_"+count, onchange: "javascript: checkThis(this);"});
		$('new_blocks').appendChild(a);
new_blocks - id div'a в который ложится чайлд. может конечно и неправильно :) по крайней мере в ФФ опере и сафари нормально работало
 
Сверху