Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2014, 21:56
Интересующийся
Отправить личное сообщение для Euler Посмотреть профиль Найти все сообщения от Euler
 
Регистрация: 14.12.2012
Сообщений: 15

очистка input, с типом file
Доброго времени суток. Нужно очистить заполненное поле ввода типа file.
Пробовал $("#my_file").prop("files", []) и странный метод document.getElementById("my_file").innerHTML = document.getElementById("my_file").innerHTML отсюда - ничего не работает(проверял только в последнем FF).
Подскажите люди добрые, как это поле зачистить(не цепляя к нему отдельную форму, разумеется ).
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2014, 22:01
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

как вариант пересоздать элемент
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2014, 22:28
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

element.prop('value', null);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2014, 23:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Euler
отсюда - ничего не работает
Там в последних комментариях сказано - что innerHTML нужно у родителя переписывать, а не у инпута. Пост бесполезный, только с толку народ сбивает (я сначала тоже повелся )

Сообщение от nerv_
element.prop('value', null);
Насколько это кроссбраузерно? В jQuery это по-особому обрабатывается для файловых инпутов?

Сообщение от Euler
не цепляя к нему отдельную форму, разумеется
Можно создать временную форму, добавить в нее поле, вызвать reset и вернуть поле на место.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2014, 23:57
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Euler
Пробовал $("#my_file").prop("files", [])
http://www.w3.org/TR/FileAPI/#attributes-filelist
Цитата:
Note
The HTMLInputElement interface [html] has a readonly attribute of type FileList, which is what is being accessed in the above example. Other interfaces with a readonly attribute of type FileList include the DataTransfer interface [html].
http://www.w3.org/TR/2011/WD-html5-2...t-element.html
Цитата:
readonly attribute FileList files;


Сообщение от danik.js
Там в последних комментариях сказано - что innerHTML нужно у родителя переписывать, а не у инпута.
в конце этого "супер длинного" поста есть ссылка на пример
http://designformasters.info/lab/cle...put/index.html

сам пример реализует один из вариантов того, про что ведёт речь devote
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2014, 00:31
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Через input.value не получается?
<html>
<head>
</head>
<body>

<input id="inp" type="file" />
<button id="but">
</button>

<script>
var but=document.querySelector("#but")
var inp=document.querySelector("#inp")
but.onclick=function(){
   inp.value=""
}

</script>
 
</body>
</html>

Последний раз редактировалось krutoy, 15.11.2014 в 00:38.
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2014, 02:02
Интересующийся
Отправить личное сообщение для Euler Посмотреть профиль Найти все сообщения от Euler
 
Регистрация: 14.12.2012
Сообщений: 15

Всем спасибо, в моём случае самым простым вариантом оказалось обернуть файлы в формы и очищать их $("#form_my_file")[0].reset();
Сброс value нужно будет проверить, очень неочевидный вариант, учитывая отсутствие такого свойства у файлов .
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2014, 07:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Euler
Сброс value нужно будет проверить, очень неочевидный вариант, учитывая отсутствие такого свойства у файлов
Все уже проверено - читай комментарии у статьи. Статья мож и бесполезная, но, как часто бывает, в комментариях больше важной инфы.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2014, 08:24
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от Euler
учитывая отсутствие такого свойства у файлов
У каких файлов? Вы же, вроде, про поля говорили.
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2014, 09:33
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

input.value = ""; вполне кроссбраузерный вариант

удивляет то, что в ie11 до сих пор нет fakepath
http://www.w3.org/TR/2011/WD-html5-2...value-filename
http://www.w3.org/TR/2011/WD-html5-2...e-upload-state
<!DOCTYPE html>
<meta charset="utf-8"/>

<script>
function extractFilename(path) {
  var x;
  x = path.lastIndexOf('\\');
  if (x >= 0) // Windows-based path
    return path.substr(x+1);
  x = path.lastIndexOf('/');
  if (x >= 0) // Unix-based path
    return path.substr(x+1);
  return path; // just the filename
}
</script>
This can be used as follows:

<p><input type=file name=image onchange="updateFilename(this.value)"></p>
<p>The name of the file you picked is: <span id="filename">(none)</span></p>
<script>
 function updateFilename(path) {
   var name = extractFilename(path);
   document.getElementById('filename').textContent = name;
   
   alert(path);
 }
</script>


PS: хотя вру, здесь на сайте (а не локально) в ie всё-таки вывело fakepath (на локальном сервере тоже он), ну слава богу

Последний раз редактировалось bes, 15.11.2014 в 09:38.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
input file disabled Bezlepkin Элементы интерфейса 1 31.01.2014 13:27
Вызов события для input file ArmagedDance jQuery 4 17.02.2013 10:39
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
[newbie question] input (file) -> submit -> php(json) zatoichi AJAX и COMET 1 18.01.2011 12:18
Обработка нескольких file input Temlekur Работа 8 21.01.2010 18:30