Первая идея (которая не работает)
Попробуйте привязать обработчик кликов к кнопке. Если вы не вернете false или не остановите распространение, то после запуска обработчика кликов будет запущен загрузчик файлов:
$('#addImage').click(function(){
// code here
});
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json'
});
Это не работает, потому что библиотека AjaxUpload создает элемент ввода, который она помещает поверх кнопки при наведении курсора на кнопку. На самом деле вы нажимаете элемент ввода.
Работа вокруг
Привязать к событию click входа, на котором вы фактически нажимаете. Это не существует при загрузке страницы, поэтому мы должны использовать функцию jQuery live :
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json'
});
$('input[type="file"]').live('click', function(e){
// code here
});
См. мой обновленный скрипт для рабочего примера.
Передача динамических данных
Чтобы передать динамические данные вместе с загрузкой файла, добавьте вызов setData
в обработчик onSubmit
:
new AjaxUpload($('#addImage'), {
action: 'SaveDataBank.aspx',
name: 'uploadimage',
dataType: 'json',
onSubmit: function (file, ext) {
this.setData({clientid: GetSelectedClient()});
}
});
Выводы
Это показывает, что с библиотекой немного неудобно работать. Вы не нажимаете кнопку, поэтому вы не получите нормальных эффектов кнопки (то есть она становится с отступом, когда мышь нажата). Любой JavaScript, который использует события кнопки, не будет работать должным образом. Вы можете пойти с вышеупомянутым решением, но лично я бы искал другую библиотеку. Может быть более новый, который заменит это ? Вот еще куча других и еще немного .