Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FireFox DON';T从jQuery脚本取消表单提交_Javascript_Jquery_Firefox_Jqmodal - Fatal编程技术网

Javascript FireFox DON';T从jQuery脚本取消表单提交

Javascript FireFox DON';T从jQuery脚本取消表单提交,javascript,jquery,firefox,jqmodal,Javascript,Jquery,Firefox,Jqmodal,我有这种情况: <form class="reqSnip" action="snipvw" method="post" target="_blank"> <input type="hidden" name="a_snip" value="0"> <input type="hidden" name="b_snip" value="1"> <input type="hidden" name="fullDoc" value="true"

我有这种情况:

<form class="reqSnip" action="snipvw" method="post" target="_blank">
    <input type="hidden" name="a_snip" value="0">
    <input type="hidden" name="b_snip" value="1">
    <input type="hidden" name="fullDoc" value="true">
    <button type="submit" class="getFullSnippet"></button>
</form>
要使图片清晰,请执行以下操作:

  • //1-在网页上打开一些“弹出式”窗口
  • //2-取消表格提交。我这样做,因为表格只是要求一些 Ajax信息,不得执行标准表单提交。为了我的 你可以这样想,因为我只是不想提交表格 但是,所有Ajax内容都与问题无关
所有这些是如何协同工作的:

  • 在IE7/8/9/Chrome/Opera中——一切如期,弹出窗口打开,表单不显示 提交
  • 在FireFox中(WindowsXPSP3上的8.0.1版)-弹出窗口打开并从DO 已提交(以便在浏览器中显示新选项卡)
我在javascript调试器中做了一个简单的调查(我在第//1和//2行上放置了两个断点(BP))以及我发现的事实:

  • IE7/8/9/Chrome/Opera-在第//行中点击BP,然后在第//行中点击BP
  • FireFox-在第//1行中点击BP,而在第//2行中从未点击BP,所以 命令“return false”从未执行过:(
那么-如何使FF行为与所有其他浏览器中的行为相同

第1行中使用的p.S.库:

  • jQuery-你知道的:)
  • 来自jqModal的jqmShow命令,这是jQuery的插件。它是 主页:
更新

我找到了问题的根源。。。 根据jqModal文档(参见上面的链接),如果绑定到onShow事件,则必须在事件处理程序中显示(设置为可见)对话框(我的“弹出式”窗口)。因此,总体方案将是:

var myOpen=function(hash){ hash.w.css('opacity',0.88).show(); }; 
$('#dialog').jqm({onShow:myOpen}); 
....
$('#dialog').jqmShow();
我写的代码与此非常接近。 所有浏览器都接受这种方法。FF“不喜欢”它。不知道为什么。所以,为了解决我的问题,不必绑定到onShow事件就足够了。就是这样

试试这个:

jQuery('.reqSnip').submit(function(e) {
    jQuery('#snipDIV').jqmShow(); // 1
    e.preventDefault(); // 2
});
试试这个:

jQuery('.reqSnip').submit(function(e) {
    jQuery('#snipDIV').jqmShow(); // 1
    e.preventDefault(); // 2
});

这在FF8中适用于我。您是否尝试过清除浏览器缓存并确保运行的是您认为正在运行的代码,而不是旧版本?我非常确定我尝试执行的代码与我的开始消息中的代码完全相同,因为Firebug for FF向我显示了浏览器从服务器(或缓存,如您所述)获取的javascript代码行. 表单的HTML代码也是如此。我直接从Firebug复制了这两个代码片段。因此,可以消除错误/不准确/过时和其他类似的原因。如果第1行被命中,而第2行未被命中,则通常意味着第1行抛出了异常。它抛出了什么异常?这在FF8中对我有效。您是否尝试过清除浏览器缓存并确保运行的是您认为正在运行的代码,而不是旧版本?我非常确定我尝试执行的代码与我的开始消息中的代码完全相同,因为Firebug for FF向我显示了浏览器从服务器(或缓存,如您所述)获取的javascript代码行. 表单的HTML代码也是如此。我直接从Firebug复制了这两个代码片段。因此,可以消除错误/不准确/过时和其他类似的原因。如果第1行被命中,而第2行未被命中,则通常意味着第1行抛出了异常。它抛出了什么异常?我尝试你的建议(谢谢!)。恐怕不行(第//2行在控制流中仍然没有命中,所以表单继续提交。我尝试了您的建议(谢谢!)。恐怕不行。:(第//2行在控制流中仍然没有命中,所以表单继续提交。)。