jquery очистить input file

Содержание

  1. среда, 29 декабря 2010 г.
  2. Очистка input file
  3. 25 ответов

среда, 29 декабря 2010 г.

Очистка input file

Для загрузки файла на сервер, обычно, используют . Это удобный и проверенный способ, но в нём есть одна проблема — очистка этого поля от выбранного файла. Её нужно делать, если загрузка не обязательна. Т.е. у пользователя должна быть возможность отменить загрузку выбранного им файла.

Обычная очистка значения на никак не повлияет, поэтому придётся прибегнуть к разным хитростям. В большинстве статей на эту тему предлагается следующее решение:

Такой подход выполняет поставленную задачу. Однако он обладает одной очень неприятной особенностью. Если пользователь очистит файловое поле, а потом опять выберет файл, то этот файл не отправится на сервер (точную причину такого поведения я не знаю). Это очень серьёзная ошибка в логике работы файлового поля, поэтому я предлагаю менее красивый, но правильно работающий способ:

Приходится сбрасывать все значения в форме, т.к. сброс значения для отдельного элемента не предусмотрен. Способ громоздкий и текст в форме один раз мигает при перезаписи значений. Зато вышеописанная проблема исчезает. Если у кого-то есть идея получше, то пишите о ней в комментариях обязательно.

Здравствуйте, уважаемые пользователи.

Возникла такая проблема, которую не могу решить самостоятельно. Суть проблемы вот в чем:
Есть input file, в котором пользователи могут выбрать несколько файлов. Как только пользователь выбирает файлы, в jquery срабатывает событие change, и специальном div сверху отображаются имена всех выбранных файлов. Рядом с каждым именем есть кнопка «Удалить». Необходимо сделать по нажатию на кнопку «Удалить» функцию, которая бы удаляла конкретный файл из числа выбранных, и, соответственно, меняла бы значение input file.

Можно ли очистить управляющее значение с помощью jQuery? Я пробовал следующее:

Но это не работает.

25 ответов

Легко: вы оборачиваете элемент

и вы можете запустить сброс, используя jQuery с кодом, подобным следующему:

$(«#control»).val(») — это все, что вам нужно! Протестировано на Chrome с использованием JQuery 1.11

Другие пользователи также протестировали в Firefox.

Я использовал https://github.com/malsup/form/blob/master/jquery.form.js , который имеет функцию clearInputs() , которая является кросс-браузерной, хорошо протестированной, простой в использовании и обрабатывает также проблемы с IE и очистка скрытых полей при необходимости. Может быть, немного длинное решение, чтобы очистить только ввод файла, но если вы имеете дело с загрузкой файлов через браузер, то это решение рекомендуется.

Я закончил с этим:

возможно, не самое элегантное решение, но оно работает, насколько я могу судить.

Значение файловых входов доступно только для чтения (по соображениям безопасности). Вы не можете очистить его программно (кроме вызова метода reset () формы, которая имеет более широкую область действия, чем просто это поле).

Источник: computermaker.info

Техника и Гаджеты
Добавить комментарий