Я пытаюсь охватить jQuery 100% с, он - простой и изящный API, но я столкнулся с несоответствием между API и прямым HTML, который я не могу вполне выяснить.
У меня есть сценарий загрузчика файла Ajax (который функционирует правильно), что я хочу выполнить каждый раз изменения входного значения файла. Вот мой рабочий код:
<input type="file" size="45" name="imageFile" id="imageFile" onchange="uploadFile()">
Когда я преобразовываю onchange
событие к реализации jQuery:
$('#imageFile').change(function(){ uploadFile(); });
результатом не является то же. С onchange
припишите uploadFile()
функция вызвана каждый раз, когда значение изменяется, как ожидается. Но с API jQuery .change()
обработчик событий, событие только стреляет в первый раз, когда значение является изменением. Любое изменение значения после этого проигнорировано. Это кажется неправильным мне, но конечно это не может быть контролем jQuery, правильно?
Кто-либо еще встретился с той же проблемой, и у Вас есть обходное решение или решение проблемы кроме того, что я описал выше?
обновляет ли загрузчик ajax ваш элемент ввода? если да, то вам следует рассмотреть возможность использования метода .live ().
$('#imageFile').live('change', function(){ uploadFile(); });
обновление:
из jQuery 1.7+, теперь вы должны использовать .on ()
$(parent_element_selector_here or document ).on('change','#imageFile' , function(){ uploadFile(); });