我有一小段 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();
};
});