14.11.2014, 21:56
|
Интересующийся
|
|
Регистрация: 14.12.2012
Сообщений: 15
|
|
очистка input, с типом file
Доброго времени суток. Нужно очистить заполненное поле ввода типа file.
Пробовал $("#my_file").prop("files", []) и странный метод document.getElementById("my_file").innerHTML = document.getElementById("my_file").innerHTML отсюда - ничего не работает(проверял только в последнем FF).
Подскажите люди добрые, как это поле зачистить(не цепляя к нему отдельную форму, разумеется ).
|
|
14.11.2014, 22:01
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
как вариант пересоздать элемент
|
|
14.11.2014, 22:28
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
element.prop('value', null);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
14.11.2014, 23:10
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Euler
|
отсюда - ничего не работает
|
Там в последних комментариях сказано - что innerHTML нужно у родителя переписывать, а не у инпута. Пост бесполезный, только с толку народ сбивает (я сначала тоже повелся )
Сообщение от nerv_
|
element.prop('value', null);
|
Насколько это кроссбраузерно? В jQuery это по-особому обрабатывается для файловых инпутов?
Сообщение от Euler
|
не цепляя к нему отдельную форму, разумеется
|
Можно создать временную форму, добавить в нее поле, вызвать reset и вернуть поле на место.
__________________
В личку только с интересными предложениями
|
|
14.11.2014, 23:57
|
|
Профессор
|
|
Регистрация: 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
|
|
15.11.2014, 00:31
|
Профессор
|
|
Регистрация: 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.
|
|
15.11.2014, 02:02
|
Интересующийся
|
|
Регистрация: 14.12.2012
Сообщений: 15
|
|
Всем спасибо, в моём случае самым простым вариантом оказалось обернуть файлы в формы и очищать их $("#form_my_file")[0].reset();
Сброс value нужно будет проверить, очень неочевидный вариант, учитывая отсутствие такого свойства у файлов .
|
|
15.11.2014, 07:49
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Euler
|
Сброс value нужно будет проверить, очень неочевидный вариант, учитывая отсутствие такого свойства у файлов
|
Все уже проверено - читай комментарии у статьи. Статья мож и бесполезная, но, как часто бывает, в комментариях больше важной инфы.
__________________
В личку только с интересными предложениями
|
|
15.11.2014, 08:24
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от Euler
|
учитывая отсутствие такого свойства у файлов
|
У каких файлов? Вы же, вроде, про поля говорили.
|
|
15.11.2014, 09:33
|
|
Профессор
|
|
Регистрация: 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.
|
|
|
|