使用v1.5,jQuery单击处理程序并不总是在IE 7/8中工作

时间:2011-02-14 16:31:46

标签: jquery internet-explorer jquery-click-event plupload

我已经定义了一些点击事件处理程序,如下所示:

$(document).ready(function () {
  /*
  * Since the "Start Upload" button is available, we don't need to worry about starting the 
  * upload when the user clicks "Update". But we need to make sure to display an error message
  * if there are files in the uploader that have not been uploaded yet.
  */
  $('#myAccount p.buttons input[alt="Update"]').click(function (event) {

    // check if there are files in the uploader
    if (uploader.files.length > 0) {

        // if there are files that have not been uploaded yet, we need to show an error message
        if (uploader.total.uploaded != uploader.files.length) {

            // if the error message hasn't been created yet, create it
            // else, it'll already be visible so we don't need to do anything
            if ($('#upload_error').length == 0) {
                $('<p id="upload_error">Error!</p>').insertAfter('#myAccount p.buttons input[alt="Cancel"]');
            }
            event.preventDefault(); // stop the click event
        }
    }
    // continue click event as normal
  });
});

......和......

// if the cancel button is clicked, then remove the files from the uploader
$('#myAccount p.buttons input[alt="Cancel"]').click(function (event) {
    uploader.splice(0, uploader.files.length);
    // continue click event as normal
});

两者在Firefox中运行良好,但在IE8和IE7(兼容模式)下,这些都不能一直运行。

更具体一点,这个“上传者”的东西与Plupload file uploader有关。基本上,我在表单中有这个上传器。表单提交正常,如果我根本不触摸上传器,上面的点击处理程序工作正常。

但是,在下面的例子中,上面的点击处理程序不起作用:我排队文件并让上传程序执行其操作,因此所有文件都已上传;现在我点击表单上的提交,没有任何反应,但我希望表单提交。无论何时我与上传者交互,点击事件处理程序都不起作用。

我希望我的评论能澄清我的意图。有关为什么这在IE 7/8中不起作用的任何想法?我究竟做错了什么? IE中的event.preventDefault()处理方式不同吗?

感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; }

在使用之前测试preventDefault。

话虽如此,使用jQuery,您只需要return false;并且它会为您处理一切

答案 1 :(得分:0)

我刚刚切换到Flash运行时。它现在似乎工作正常。