ファイル入力フィールドの検証を行うことを目的とした小さなJavaScriptがあります。Chrome、Safari、Opera、Firefox では正常に動作しますが、Internet Explorer 9 以前では動作しません... 私は Jquery 1.8.3 を使用していますが、明らかに 1.4.2 以降では .change プロパティが IE で動作するはずです。 . $(".fileInput").live('change'... も試しました
何が起きているのかわかりません。アドバイスを歓迎します。
jQuery(document).ready(function($){
// Detect sh*tty IE
if ($.browser.msie && $.browser.version <= 9) {
// Bind to property change
$(".fileInput").bind('propertychange', function() {
fileChange(this);
});
} else {
$(".fileInput").change(function() {
fileChange(this);
});
}
function fileChange($item) {
// Get the filename
var $fileName = $($item).val();
var $inputId = $($item).attr('id');
var $fakeName = $($item).val().split('\\').pop();
var $fileSize = (($item.files[0].size)/1024)/1024;
var $ext = $($item).val().split('.').pop().toLowerCase();
var $acceptFiles = ['jpg', 'jpeg'];
if ($.inArray($ext, $acceptFiles) == -1) {
alert('For security, we can only accept jpeg images');
// Reset the value of $item item
$($item).val('');
return;
}
// Make sure the file size isn't bigger than 1mb
if ($fileSize >= 1.8) {
alert("The image you've chosen is too big. \n\nWe accept images up to 2mb in size");
// Reset the value of $item item
$($item).val('');
return;
}
// Check that the file
if ($fileName != '') {
$fileNotification = $('<li>', { id: 'file_'+$inputId, class: 'fileNotification', text: $fakeName});
// Append it to the list
$('#filesList').append($fileNotification);
}
// Hide the file input
$($item).css({display : 'none'});
// Show the next field
$($item).next().show();
};
});