Я пытаюсь сделать две кнопки загрузки. Один для логотипа учетной записи.Несколько кнопок загрузки javascript только для размещения содержимого в одном
.col-sm-6
.wrapper
Account Logo
#account_logo
= image_tag @account.logo.url, :class => 'account_logo'
= file_field_tag 'account[logo]', :accept => 'image/png,image/jpeg'
%a.btn.btn-default{:href => '#'} Choose file
%span.notice
Only PNG or JPG please.
Другое для эмблемы электронной почты.
.col-sm-6
.wrapper
Email Logo
#email_logo
= image_tag @account.email_logo.url, :class => 'email_logo'
= file_field_tag 'account[email_logo]', :accept => 'image/png,image/jpeg'
%a.btn.btn-default{:href => '#'} Choose file
%span.notice
Only PNG or JPG please.
Я добавил javascript, чтобы он работал для обоих. Однако происходит что-то очень плохое. Я добавил предупреждения, чтобы попробовать и отлаживать, и они говорят мне, что все это происходит в #email_logo, даже когда я нажимаю кнопку #account_logo. Может ли какой-нибудь помощник javascript помочь мне?
:javascript
var logo = ["#account_logo", "#email_logo"];
for (var i = 0; i < logo.length; i++) {
var on_change = (logo[i] + ' input[type=file]');
var on_click = (logo[i] + ' a.btn');
var logo_img = (logo[i] + ' img');
$(document).on('click', on_click , function() {
alert("it is now " + on_click);
$(on_change).click();
alert("it is now " + on_change);
});
$(document).on('change', on_change, function() {
alert("it is now " + on_change);
var filelist = $(this).get(0).files;
var reader = new FileReader();
reader.onload = function (e) {
var url = e.target.result;
alert("it is now " + logo_img);
$(logo_img).attr('src', url);
}
reader.readAsDataURL(filelist[0]);
});
}
Я подозреваю, что код "reader.readAsDataURL (filelist [0]);" который на третьей строке с конца вашей javascript программы. –
@ fumu7 Почему? – alexia