我将在下面发布我的 Javascript。它适用于所有浏览器,但在 IE 8 或 IE 9 中根本不适用。没有错误,它只是不起作用。我想好消息是我可以准确地知道它在哪里中断(见下文),但我不知道为什么或如何修复它。
我的 HTML 很简单。这只是我正在处理的一个更大项目的测试页面。我在页面上有 6 个简单形式的文件输入框。我要做的是抓取那些输入字段,丢弃任何空的,然后将文件(图片)一一提交到服务器。我知道有更优雅的方式来发送图片,但对于我正在开发的网站来说,这是最好的方式。
我正在使用随软件提供的服务器端 PHP 代码。它没有改变。
我先承认我是自学成才的,Javascript 对我来说是一个弱点。我不是白痴,但我是 Javascript 新手。
该代码在除 IE 之外的所有浏览器中都能完美运行。页面加载,document.ready() 代码运行,Fine Uploader DIV 被放置在页面上。当我点击提交按钮时,问题就来了。我追踪到问题所在
manualUploader.fineUploader('addFiles', current[0].files[0]);
出于某种原因,运行该行代码会破坏我的脚本,提交继续进行而不处理任何其余代码,并完全忽略“return false”;应该阻止提交的声明。据我所知,它不会引发任何错误。为什么 IE 会以不同于所有其他浏览器的方式处理该代码?任何帮助,将不胜感激。
$(document).ready(function() {
var numFiles = 0;
var numUploaded = 0;
var manualUploader = $('#sandbox').fineUploader({
request: {
endpoint: '../../Processing/ajax_uploader.php'
},
autoUpload: false,
debug: true,
maxConnections: 1
}).on('complete', function(event, id, name, responseJSON){
numUploaded++;
var tempField = $('#' + 'pic' + (id + 1)).parent();
tempField = tempField.parent();
tempField.remove();
$('#frmNewProperty').append('<input type="hidden" name="hiddenPic' + id + '" value="' + name + '" />');
if (numUploaded == numFiles){
$('form#frmNewProperty').submit();
}
});
$('#subButton').click(function() {
var fields = $('.fileBox');
$.each(fields, function(){
var current = $(this).find('.outgoing');
var dat = current.val();
if (dat != ''){
manualUploader.fineUploader('addFiles', current[0].files[0]);
numFiles++;
}
});
manualUploader.fineUploader('uploadStoredFiles');
return false;
});
});