jQuery方法在Safari 6中不起作用

jQuery方法在Safari 6中不起作用,jquery,safari,safari6,Jquery,Safari,Safari6,把我的头发拔出来。简单的jQuery方法在Safari 6中不起作用 以下代码块适用于除Safari 6之外我测试过的所有其他浏览器。它在Safari 5及更早版本中运行良好,在Firefox中运行良好,在IE中运行良好,在Chrome中也运行良好 该警报在Safari 6中确实会弹出,因此该函数仍会启动,但其他3种方法中的任何一种都不会发生任何情况 ----更新----- 在几台机器上进行进一步测试后,我发现它只能在MacOSX10.8中的Safari6中工作。该代码在OSX 10.7中的Sa

把我的头发拔出来。简单的jQuery方法在Safari 6中不起作用

以下代码块适用于除Safari 6之外我测试过的所有其他浏览器。它在Safari 5及更早版本中运行良好,在Firefox中运行良好,在IE中运行良好,在Chrome中也运行良好

该警报在Safari 6中确实会弹出,因此该函数仍会启动,但其他3种方法中的任何一种都不会发生任何情况

----更新----- 在几台机器上进行进一步测试后,我发现它只能在MacOSX10.8中的Safari6中工作。该代码在OSX 10.7中的Safari的同一版本中运行良好。 --------------------

我正在运行jQuery1.8.3。我的页面验证为HTML5

HTML:

JavaScript:

$(function(){
    // Submit Buttons
    $('#fileUploadSubmit').click(function()
    {
        $('#fileUploadSubmit').attr('value', 'Uploading');
        $('#fileUploadSubmit').fadeTo('fast',0.6);
        $('#fileUploadLoadingBar').fadeIn('fast');
        alert('Finished');
    });
});

我可能错了,但我认为您的问题是表单在javascript运行之前提交。您可能需要使用preventDefault来防止这种情况发生。您还可以将按钮从提交按钮更改为type=“button”,这也会有所帮助。哎呀…快速编辑..我还将您的警报放在回调中,以便在fadeIN发生后运行..您可以保留或更改它

$(function(){
    // Submit Buttons
    $('#fileUploadSubmit').click(function(e)
    {
        e.preventDefault();
        $('#fileUploadSubmit').attr('value', 'Uploading');
        $('#fileUploadSubmit').fadeTo('fast',0.6);
        $('#fileUploadLoadingBar').fadeIn('fast', function() {
            alert('Finished');
        });

    });
});
您可以使用.submit()evnet(而不是单击)$('form').bind('submit',function(){…Code…})
但由于您正在尝试上载文件,我建议您使用一些ajax技术或jquery插件
关于使用ajax上传文件,有很多不错的教程(使用谷歌)

这是一个我喜欢的例子。

我在这些行中看到的唯一奇怪的东西是
$(…).attr('value','Uploading')。通常使用
$(…).val('Uploading')(或者您可以使用
prop
)。但我打赌
attr
无论如何都能起作用,而且无论如何,这并不能解释淡出的原因……很高兴看到一位新SO成员提出了一个问得很好的问题。不错!页面加载后或单击按钮后未报告javascript错误。使用输入类型
按钮而不是
提交
如何?因为它在我的Safari 6.0.2上运行良好。如果您不停止,提交类型将重定向您。我还从谷歌获取了jQuery:@n0oitaf是的……我也知道。如果我将html输入类型从“submit”更改为“button”,那么jQuery将按预期工作。但有趣的是。显然我的表单现在没有提交…所以我添加了
$('#fileUploadForm').submit()到我函数的末尾,现在表单提交了…但问题又回来了,其余的方法都不起作用。奇怪的谢谢……我已经试过了。它仍然无法在OSX 10.8中的Safari 6中工作。我已将函数更改为
$('fileUploadForm')。bind('submit',function(){$('fileUploadSubmit')。attr('value','upload');$('fileUploadSubmit')。fadeTo('fast',0.6);$('fileuploadingbar')。fadeIn('fast');)谢谢你的建议。只是尝试了一下,不幸的是它没有解决问题。由于这只发生在OSX 10.8中,在我尝试了所有东西之后,我开始认为这可能与操作系统或Safari的特定构建有关?没问题……这很奇怪。在Safari 6.0.2(10.8.2)中,它对我也不起作用,但经过修改后,它工作得很好……当然需要添加更多的代码来提交表单(或者使用.submit代替.click),或者执行步骤中的下一步操作,但这确实解决了方法(效果)的问题未运行。如果我将输入类型从“提交”更改为“按钮”,那么我的jQuery也可以按预期工作。但问题是。一旦我添加了
$('#fileUploadForm')。submit()在我的函数结束时,表单现在将提交…但问题又回来了,其余的方法不起作用。奇怪的听起来好像这一切都与时间有关。也许需要在回调中加入一些东西,以便在预期的时候执行。这令人困惑。
$(function(){
    // Submit Buttons
    $('#fileUploadSubmit').click(function()
    {
        $('#fileUploadSubmit').attr('value', 'Uploading');
        $('#fileUploadSubmit').fadeTo('fast',0.6);
        $('#fileUploadLoadingBar').fadeIn('fast');
        alert('Finished');
    });
});
$(function(){
    // Submit Buttons
    $('#fileUploadSubmit').click(function(e)
    {
        e.preventDefault();
        $('#fileUploadSubmit').attr('value', 'Uploading');
        $('#fileUploadSubmit').fadeTo('fast',0.6);
        $('#fileUploadLoadingBar').fadeIn('fast', function() {
            alert('Finished');
        });

    });
});