Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.03.2012, 21:36
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Клонирую 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 уже потерян
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2012, 03:29
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

а так?

var newInput = $(input).clone().attr('value', $(input).val());
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 01.04.2012, 09:32
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

вроде же нельзя менять value у input type=file по соображениям безопасности
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2012, 10:25
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

кстати, да. программно поменять нельзя..

как вариант, клонировать input, а обращаться к оригинальному для получения value
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2012, 19:25
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Цитата:
как вариант, клонировать input, а обращаться к оригинальному для получения value
Спасиб, так и есть, правда форма у меня отправлялась целиком с этим значением, хм как теперь то передать его
Ответить с цитированием
  #6 (permalink)  
Старый 01.04.2012, 19:33
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Это Ajax загрузчик, основной input на сайте и при загрузке каждого нового файла он клонируется в форму и она отправляется php скрипту, брр по каким то соображениям я тогда именно так сделал
Ответить с цитированием
  #7 (permalink)  
Старый 01.04.2012, 19:57
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

т.е. при загрузке второго файла у вас ещё раз загрузится первый??? что-то не пойму..

клонируйте пустой input, пользователю всё равно ведь надо выбрать файл)
__________________
С моих слов записано верно.
Ответить с цитированием
  #8 (permalink)  
Старый 01.04.2012, 21:05
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

нет нет, в мозилле вхе хорошо, в IE когда клонирую в форму этот инпут и потом передаю форму php скрипту он ничего не получает

jQuery(newInput).appendTo(form);     // Ну и дальше ничего не работает т.к. имя файла потеряно...
jQuery(form).appendTo('body');          // form это форма до этого сделанная динамически
document.forms["jUploadForm"].submit();  // Эту самую форму  динамически сделанную отправляем php скрипту, который обрабатывает $_FILES


Но он ничего не обрабатывает в итоге, т.е. значение value я потерял, а вот понял если я оригинальный input вставлю, то он соответсвенно исчезает со страницы и оказывается в этой невидимой форме, чтобы такого не было я его клонирую... вот как тут переделать чтобы везде работало не очень понятно, разве что брать инпут оригинальный а на страницу всегда новый вставлять, пока ничего другого в голову не приходит.

Цитата:
клонируйте пустой input, пользователю всё равно ведь надо выбрать файл)
Теперь я ничего не понял ^_^
Ответить с цитированием
  #9 (permalink)  
Старый 01.04.2012, 21:16
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Так почему бы вам оригинальную форму, вместо того, что бы все клонировать(это вряд ли выйдет кроссбраузерно, type=file много чего нету из соображений приватности/безопасности), саму форму не отправлять в фрейм?
Ответить с цитированием
  #10 (permalink)  
Старый 02.04.2012, 00:02
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Это было для удобства сделано и для простоты, т.е. чтобы в место где нужно вставить кнопку загрузки не добавлять много кода, попробовал делать

$('#loadfile').appendTo(form);
 // вместо 
$('#loadfile').clone().appendTo(form);


Так работает, тогда буду создавать еще раз input в том месте откуда его убираю, сам input обернуть в <form> не очень удобно т.к. загрузчик по сайту раз 20 используется =(

А можно как то вставить input точно туда где был старый?

inp = jQuery('<input .... />');
// Вставляем его туда где был $('#loadfile') ....

Последний раз редактировалось Sergey999, 02.04.2012 в 00:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Получить содержимое HTML файла через input Battleprof Events/DOM/Window 5 13.06.2011 14:51
Не работает flot если его назначит через JavaScript PAMAC Firefox/Mozilla 4 09.11.2009 18:46
как обратиться к childNode по его id в div-е, через id родителя kichSman Events/DOM/Window 5 28.10.2009 02:16
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55