Как отследить, если файл был выбран с JavaScript? - PullRequest
0 голосов
/ 19 декабря 2010

Итак, если у меня есть поле ввода:

<input type="file" name="file" id="file" />

Я щелкаю по нему и выбираю файл, а когда нажимаю Open, я хочу отправить форму и загрузить файл, не нажимая кнопку, добавленную <input>.

1 Ответ

2 голосов
/ 19 декабря 2010

Как указывает goreSplatter ниже, будьте осторожны, чтобы такое поведение не было неожиданным с точки зрения пользовательского опыта. Например, может быть совершенно правильным сделать это с тем, что прикрепляет файлы к электронной почте, как это делает GMail; но если у пользователя нет возможности отменить эти вложения и т. д. до того, как все будет завершено, вы можете упасть в яму UX. Но я ожидаю, что вы, вероятно, уже отработали UX-аспект и не делаете глупостей. : -)

Ответ на вопрос: Вы можете сделать это, используя обработчик событий change, например, onchange= или эквивалент DOM2 через addEventListener (или attachEvent в IE).

Пример ( живая копия ):

hookEvent(document.getElementById('fileInput'),
          'change',
          inputChanged);

function inputChanged() {
  display("The input's value changed");
}

... где hookEvent - ваша служебная функция для подключения обработчика событий (см. Ссылку ниже для одного примера, но она не оптимизирована; если вы используете библиотеку, такую ​​как jQuery , Прототип , YUI , Закрытие или любой из нескольких других , они будут включать средства перехвата событий между кроссбраузерами. *

Приведенный выше пример работает в Chrome, Firefox и Opera для Linux, IE6 и IE7 в Windows, и поэтому, скорее всего, в целом будет хорошо поддерживаться.

...