5

Очистка <input type='file' /> с помощью jQuery

28

Вопрос: Как очистить значение элемента <input type='file' /> с помощью jQuery?

Я пытаюсь очистить значение элемента <input type='file' /> с помощью jQuery, но у меня это не получается. Я пробовал следующий код:

$('#control').attr({ value: '' });

Однако он не работает. Как можно корректно сбросить значение поля для выбора файла?

5 ответ(ов)

0

Вы можете использовать такой код:

if ($.browser.msie || $.browser.webkit) {
  // не работает с Opera и Firefox
  $(this).after($(this).clone(true)).remove();  
} else {
  this.setAttribute('type', 'text');
  this.setAttribute('type', 'file'); 
}

Хотя это решение может показаться не самым элегантным, оно функционирует, насколько я могу судить.

0

По очевидным причинам безопасности вы не можете установить значение для поля ввода типа "файл", даже если это пустая строка.

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

function reset_field (e) {
    e.wrap('<form>').parent('form').trigger('reset');
    e.unwrap();
}​

Вот пример: http://jsfiddle.net/v2SZJ/1/

0

Это работает для меня.

$("#file").replaceWith($("#file").clone());

Ссылка: http://forum.jquery.com/topic/how-to-clear-a-file-input-in-ie

Надеюсь, это поможет.

0

Для сброса значения элемента с ID "control" вам достаточно использовать следующий код: $("#control").val(''). Этот метод успешно протестирован в Chrome с использованием jQuery версии 1.11.

Также другие пользователи проверяли его в Firefox, и он работает без проблем.

0

Я запутался во всех вариантах здесь. Вот хак, который я сделал, и который сработал:

<form>
 <input type="file">
 <button type="reset" id="file_reset" style="display:none"></button>
</form>

Вы можете сбросить поле, используя jQuery с кодом, похожим на этот:

$('#file_reset').trigger('click');

(пример на jsfiddle: http://jsfiddle.net/eCbd6/)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь