jQuery和IE不好玩

时间:2011-01-11 11:41:53

标签: javascript jquery

我有这部分代码:

function createDownload() {
        var category, format, specification, download;

        $('#submitform').click(function() { 
            category = $('#cate').val(); 
            format = $('#form').val(); 
            specification = $('#spec').val(); 

            if (category == "NULL" || format == "NULL" || specification == "NULL") { 
                alert("Please select all options.");
                return false;
            } else {
                download = "pdfs/"+specification+format+category+".pdf"; 
                window.open(download);
            }
        });
    }

现在......在Internet Explorer中,它说“页面上有错误” - Message: 'return' statement outside of function,我必须再次点击该按钮。

在Firefox,Chrome和Safari中 - 我必须单击两次按钮才能显示PDF ...(并且没有错误)......

现在为什么会这样?!

根据要求 - 我的表格声明: <form method="post" action="javascript: return false;" onSubmit="createDownload();">

4 个答案:

答案 0 :(得分:2)

<form method="post" action="javascript: return false;" onSubmit="createDownload();">

由于您在函数中使用return false,因此抛出错误。你将不得不把它放在任何一个函数中。

这样的东西
<form method="post" action="javascript: function() {return false;}" onSubmit="createDownload();">

将起作用

最好将事件.submit()绑定到表单

<form method="post" id="frm1"></form>

$("#frm1").submit(function(){
    // your code
    return false;
});

答案 1 :(得分:1)

您需要更改action='javascript: return false;'并删除onsubmit。它应该成为action='javascript: createDownload();'

答案 2 :(得分:0)

尝试删除退货。看起来你甚至不需要它,如果这确实是问题的原因那么保持它的重点是什么?

答案 3 :(得分:0)

首先,您需要从表单中删除action - 这里没有任何意义。此外,假设#submitForm引用表单提交按钮,您的第一次单击将附加单击处理程序,第二次单击将实际调用它。相反,删除onsubmit属性并以通常的方式将处理程序附加到按钮单击或表单提交事件,确保在任何一种情况下取​​消事件:

jQuery(function($) {
    $('#submitform').click(function() {
    // or: $('#formID').submit(function() {
        var category, format, specification, download;

        category = $('#cate').val(); 
        format = $('#form').val(); 
        specification = $('#spec').val(); 

        if (category == "NULL" || format == "NULL" || specification == "NULL") { 
            alert("Please select all options.");
        } else {
            download = "pdfs/"+specification+format+category+".pdf"; 
            window.open(download);
        }

        return false;
    });
});