繁体   English   中英

FireFox不要取消从jQuery脚本提交的表单

[英]FireFox DON'T cancel form submit from jQuery script

我有这种情况:

<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>

因此-具有3个隐藏字段+按钮提交的基本表单。 在jQuery的帮助下,我绑定了提交此表单并自定义流程的时刻:

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

为了使图片清晰:

  • // 1-在网页上打开一些“类似弹出窗口”的窗口
  • // 2-取消表单提交。 我这样做是因为表单仅请求一些Ajax信息,并且不得执行标准表单提交。 对于我的问题,您可以考虑一下,因为我只是不希望提交表单,所以所有Ajax内容都与该问题无关。

所有这些如何一起工作:

  • 在IE7 / 8/9 / Chrome / Opera中-符合预期,弹出窗口打开,未提交表单
  • 在FireFox(Windows XP SP3上的8.0.1版)中-弹出窗口已打开,并且已提交DO(因此新选项卡出现在浏览器中)

我在javascript调试器中做了一个简单的调查(我只在第// 1和// 2行放置了两个breakpoints(BP)),并且发现了以下事实:

  • IE7 / 8/9 / Chrome / Opera-在第// 1行点击BP,然后在// 2行点击BP
  • FireFox-在第// 1行命中BP,从不在// //第2行命中BP,因此命令'return false'从未执行过:(

那么-如何使FF行为与所有其他浏览器相同?

第1行中使用的PS库

更新

我找到了问题的根源。据jqModal文件(见上面的链接),如果你绑定到你必须显示(设置可见)的事件处理程序昂秀事件的对话框(我的“弹出式”窗口)。 所以总体方案是

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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM