Как очистить ввод HTML-файла с помощью JavaScript? - PullRequest
104 голосов
/ 09 ноября 2009

Я хочу очистить файл ввода в моей форме.

Я знаю о настройке источников для того же метода ... Но этот метод не удалит выбранный путь к файлу.

Примечание : я бы хотел избежать перезагрузки страницы, сброса формы или выполнения вызова AJAX.

Возможно ли это?

Ответы [ 14 ]

1 голос
/ 03 марта 2014

Приведенные выше ответы предлагают несколько неуклюжих решений по следующим причинам:

  1. Мне не нравится сначала wrap input, а затем получение html, оно очень запутанное и грязное.

  2. Кросс-браузер JS удобен, и кажется, что в этом случае слишком много неизвестных, чтобы надежно использовать type переключение (что опять-таки немного грязно) и установку value на ''

Итак, я предлагаю вам свое решение на основе jQuery:

$('#myinput').replaceWith($('#myinput').clone())

Он делает то, что говорит, он заменяет ввод клоном себя. У клона не будет выбранного файла.

Преимущества:

  1. Простой и понятный код
  2. Нет неуклюжей упаковки или переключения типов
  3. Кросс-браузерная совместимость (поправьте меня, если я ошибаюсь)

Результат: Счастливый программист

0 голосов
/ 25 февраля 2019

Это на самом деле довольно просто.

document.querySelector('#input-field').value = '';
0 голосов
/ 08 декабря 2018

Я испробовал большинство решений, но, похоже, никто не работал. Однако я нашел прогулку вокруг него.

Структура формы: form => label, input и submit button. После того, как мы выберем файл, имя файла будет показано надписью, сделав это вручную в JavaScript.

Итак, моя стратегия такова: изначально отправка button отключена, после выбора файла атрибут кнопки отправки disabled будет удален, чтобы я мог отправить файл. После отправки я очищаю label, что выглядит так, будто я очищаю файл input, но на самом деле это не так. Затем я снова отключу кнопку отправки, чтобы запретить отправку формы.

Устанавливая отправку button disable или нет, я прекращаю отправку файла много раз, пока не выберу другой файл.

0 голосов
/ 22 марта 2018

Мне помогло то, что я попытался извлечь и загрузить последний выбранный файл, используя цикл, вместо очистки очереди, и это сработало. Вот код

for (int i = 0; i <= Request.Files.Count-1; i++)
{
 HttpPostedFileBase uploadfile = files[i];
 Stream fs = uploadfile.InputStream;
 BinaryReader br = new BinaryReader(fs);
 Byte[] imageBytes = br.ReadBytes((Int32)fs.Length);
}

Надеюсь, это поможет некоторым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...