Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2011, 14:12
Интересующийся
Отправить личное сообщение для Nitro_Generate Посмотреть профиль Найти все сообщения от Nitro_Generate
 
Регистрация: 14.04.2011
Сообщений: 20

Очистить INPUT TYPE=file
Всем доброго времени суток, столкнулся с такой проблемой, имеется поле с типом файл, для загрузки файлов на сервер естественно. Если пользователь указал в поле файл, а потом передумал его загружать, и хочет очистить поле, то обычными средствами, кнопка "delete", "backspace" поле не очистить, я решил прибегнуть к JS нашел функцию реализующую мою идею на библиотеки JQ, но движок сайта использует свою библиотеку, по сему получается конфликт библиотек, точнее говоря переменных общих. Начал искать скрипт не требующий библиотек, к сожалению ничего не нашел путевого, все что я нашел, сбрасывает всю форму, а мне нужно только 1 поле . По этому прошу помощи у вас.
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2011, 14:23
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

у формы есть кнопка "reset", это точно должно помочь
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2011, 14:58
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

function clearInputFile ( elem ) {
  var parent_ = elem.parentNode,
      input_ = document.createElement("input");
  input_.type = "file";
  input_.name = elem.name;
  elem.id && input_.id = elem.id;
  elem.className && input_.className = elem.className;
  parent_.insertBefore( input_, elem );
  parent_.removeChild( elem );
  return input_;
}
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2011, 15:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Nitro_Generate
Начал искать скрипт не требующий библиотек, к сожалению ничего не нашел путевого
Как уже посоветовал DooMer...

<form>
	<input id='test' type='file' />
	<input type='reset' value='Reset' />
</form>
Ответить с цитированием
  #5 (permalink)  
Старый 22.08.2011, 15:17
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от DooMer
у формы есть кнопка "reset", это точно должно помочь
У формы есть метод reset.
Сообщение от nikita.mmf
elem.id && input_.id = elem.id;
elem.className && input_.className = elem.className;
ReferenceError²
Сообщение от nikita.mmf
parent_.insertBefore( input_, elem );
parent_.removeChild( elem );
Есть же replaceChild.
Ответить с цитированием
  #6 (permalink)  
Старый 22.08.2011, 16:51
Интересующийся
Отправить личное сообщение для Nitro_Generate Посмотреть профиль Найти все сообщения от Nitro_Generate
 
Регистрация: 14.04.2011
Сообщений: 20

В форме куча полей для заполнения.
Резетом мы снесем все поля.
А мне надо из всех полей снести значение только в одном, имеющим тип файл.
Ответить с цитированием
  #7 (permalink)  
Старый 22.08.2011, 16:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Nitro_Generate
В форме куча полей для заполнения.
Разделяй и властвуй!
Ответить с цитированием
  #8 (permalink)  
Старый 22.08.2011, 18:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

соглашусь с nikita.mmf удаляй поле из DOM и вставляй пустое обратно, самое простое решение...
Ответить с цитированием
  #9 (permalink)  
Старый 23.08.2011, 15:08
Интересующийся
Отправить личное сообщение для Nitro_Generate Посмотреть профиль Найти все сообщения от Nitro_Generate
 
Регистрация: 14.04.2011
Сообщений: 20

Очередная идея, очистить всю форму, а обратно вставить все кроме файлов
<form action="<?=$h?>new.html" method="post" id="fMain" enctype="multipart/form-data" name="add" >

<input id="f1" type="file" name="logo[]" /> 
    <input type="button" value="Удалить" onclick="ClearFile1('fMain');" />
<br /><input id="f2" type="file" name="logo[]" /> 
     <input type="button" value="Удалить" onclick="ClearFile2('fMain');" />
<br /><input id="f3" type="file" name="logo[]" /> 
     <input type="button" value="Удалить" onclick="ClearFile3('fMain');" />
<br /><input id="f4" type="file" name="logo[]" /> 
     <input type="button" value="Удалить" onclick="ClearFile4('fMain');" />


function ClearFile1(idForm)
{
   var form = document.getElementById(idForm);
   var values = new Array(form.elements.length);
   for (var i = 0; i < form.elements.length; i++) 
   {
      values[i] = form.elements.item(i).value;
   }
    form.reset();  
   for (var i = 0; i < form.elements.length; i++)
   {
      if(form.elements.item(i).id != 'f1') 
	        {
         form.elements.item(i).value = values[i];
      }
   }
}

function ClearFile2(idForm)
{
   var form = document.getElementById(idForm);
   var values = new Array(form.elements.length);
   for (var i = 0; i < form.elements.length; i++) 
   {
      values[i] = form.elements.item(i).value;
   }
    form.reset();  
   for (var i = 0; i < form.elements.length; i++)
   {
      if(form.elements.item(i).id != 'f2') 
	        {
         form.elements.item(i).value = values[i];
      }
   }
}

function ClearFile3(idForm)
{
   var form = document.getElementById(idForm);
   var values = new Array(form.elements.length);
   for (var i = 0; i < form.elements.length; i++) 
   {
      values[i] = form.elements.item(i).value;
   }
    form.reset();  
   for (var i = 0; i < form.elements.length; i++)
   {
      if(form.elements.item(i).id != 'f3') 
	        {
         form.elements.item(i).value = values[i];
      }
   }
}

function ClearFile4(idForm)
{
   var form = document.getElementById(idForm);
   var values = new Array(form.elements.length);
   for (var i = 0; i < form.elements.length; i++) 
   {
      values[i] = form.elements.item(i).value;
   }
    form.reset();  
   for (var i = 0; i < form.elements.length; i++)
   {
      if(form.elements.item(i).id != 'f4') 
	        {
         form.elements.item(i).value = values[i];
      }
   }
}

Пометил каждое поле файл формата своим id
для того что бы очищать единственное поле а не все сразу
продублировал скрипт 4 раза. Для каждого поля своя функция и свой id
Не работает, очищает сразу все 4 поля. Зато остальные сохраняются.
Ответить с цитированием
  #10 (permalink)  
Старый 23.08.2011, 15:21
Аватар для systemiv
Профессор
Отправить личное сообщение для systemiv Посмотреть профиль Найти все сообщения от systemiv
 
Регистрация: 19.08.2011
Сообщений: 186

Помоему это такой явный костыль.
http://rubydev.ru/2011/01/rubyonrails_dry/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Какими средствами можно получить полный путь к файлу из input type=file swa ExtJS 6 19.05.2011 11:19
input type='file' + getElementById vah-smile Элементы интерфейса 3 30.03.2011 06:24
input type=file ctocopok Элементы интерфейса 5 13.03.2011 19:51
< input type=file > не попадают в $_FILES ce39 Элементы интерфейса 8 01.10.2009 15:33