Клонирую input через JQ и теряется его value
Собственно вся проблема в заголовке, код очень простой:
var newInput = jQuery(input).clone(); // input - реальный input=file на странице alert(input.value); // Выдает мне имя загружаемого файла alert(newInput.attr('value')); // Уже ничего мне не выдает (( jQuery(newInput).appendTo(form); // Ну и дальше ничего не работает т.к. имя файла потеряно... jQuery(form).appendTo('body'); // form это форма до этого сделанная динамически Ошибка оказалась именно тут и везде кроме как в FF и Оперы она есть, при клонировании теряю значение, пробовал так: $('#loadfile').clone().appendTo(form); jQuery(form).appendTo('body'); То же самое, у копии инпута в форме value уже потерян :help: |
а так?
var newInput = $(input).clone().attr('value', $(input).val()); |
вроде же нельзя менять value у input type=file по соображениям безопасности
|
кстати, да. программно поменять нельзя..
как вариант, клонировать input, а обращаться к оригинальному для получения value |
Цитата:
|
Это Ajax загрузчик, основной input на сайте и при загрузке каждого нового файла он клонируется в форму и она отправляется php скрипту, брр по каким то соображениям я тогда именно так сделал
|
т.е. при загрузке второго файла у вас ещё раз загрузится первый??? что-то не пойму..
клонируйте пустой input, пользователю всё равно ведь надо выбрать файл) |
нет нет, в мозилле вхе хорошо, в IE когда клонирую в форму этот инпут и потом передаю форму php скрипту он ничего не получает
jQuery(newInput).appendTo(form); // Ну и дальше ничего не работает т.к. имя файла потеряно... jQuery(form).appendTo('body'); // form это форма до этого сделанная динамически document.forms["jUploadForm"].submit(); // Эту самую форму динамически сделанную отправляем php скрипту, который обрабатывает $_FILES Но он ничего не обрабатывает в итоге, т.е. значение value я потерял, а вот понял если я оригинальный input вставлю, то он соответсвенно исчезает со страницы и оказывается в этой невидимой форме, чтобы такого не было я его клонирую... вот как тут переделать чтобы везде работало не очень понятно, разве что брать инпут оригинальный а на страницу всегда новый вставлять, пока ничего другого в голову не приходит. Цитата:
|
Так почему бы вам оригинальную форму, вместо того, что бы все клонировать(это вряд ли выйдет кроссбраузерно, type=file много чего нету из соображений приватности/безопасности), саму форму не отправлять в фрейм?
|
Это было для удобства сделано и для простоты, т.е. чтобы в место где нужно вставить кнопку загрузки не добавлять много кода, попробовал делать
$('#loadfile').appendTo(form); // вместо $('#loadfile').clone().appendTo(form); Так работает, тогда буду создавать еще раз input в том месте откуда его убираю, сам input обернуть в <form> не очень удобно т.к. загрузчик по сайту раз 20 используется =( А можно как то вставить input точно туда где был старый? inp = jQuery('<input .... />'); // Вставляем его туда где был $('#loadfile') .... |
Часовой пояс GMT +3, время: 19:39. |