jQuery和IE不好玩

我有这部分代码:

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 …(并且没有错误)…

现在为什么会这样?!

根据要求 – 我的表格声明:

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

  

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

就像是

 

将工作

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

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

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

首先,您需要从表单中删除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; }); });