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

标签 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">
    <button type="submit" class="getFullSnippet"></button>
</form>

所以 - 具有 3 个隐藏字段和提交按钮的基本表单。在 jQuery 的帮助下,我绑定(bind)到提交此表单的时刻并自定义流程:

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

为了让图片清晰:

  • //1 - 在网页上打开一些“弹出式”窗口
  • //2 - 取消表单提交。我这样做是因为表格只要求一些 Ajax-info 并且不得执行标准表单提交。对于我的 您可以考虑的问题,因为我只是不想提交表单 地方,所有 Ajax 的东西都与问题无关。

所有这些如何协同工作:

  • 在 IE7/8/9/Chrome/Opera 中 - 一切如预期,弹出窗口打开,表单未打开 提交
  • 在 FireFox 中(Windows XP SP3 上的版本 8.0.1)- 弹出窗口打开并从 DO 已提交(因此新标 checkout 现在浏览器中)

我对 javascript 调试器进行了简单的调查(我只是在行//1 和//2 上放置了 2 个断点 (BP))和我发现的事实:

  • IE7/8/9/Chrome/Opera - 在//1 行点击 BP,然后在//2 行点击 BP
  • FireFox - 在行//1 上点击 BP 而从不在行//2 上点击 BP,所以 命令“return false”从未执行过:(

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

附言第 1 行中使用的库:

更新

我找到了问题的根源... 根据 jqModal 文档(参见上面的链接),如果您绑定(bind)到 onShow 事件,则必须在事件处理程序内部显示(设置可见)对话框(我的“类似弹出窗口”的窗口)。所以一般方案会是

var myOpen=function(hash){ hash.w.css('opacity',0.88).show(); }; 
$('#dialog').jqm({onShow:myOpen}); 
....
$('#dialog').jqmShow();

我编写的代码非常接近于此。 所有浏览器都接受这种方法。 FF“不喜欢”它。不知道为什么。所以,为了解决我的问题,不要绑定(bind)到 onShow 事件就足够了。那就是!

最佳答案

试试这个:

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

关于javascript - FireFox 不要取消从 jQuery 脚本提交的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8536597/

相关文章:

javascript - 验证手机号码用户数

javascript - Jquery Knockout - 在数据绑定(bind)属性中获取元素实例

javascript - 未捕获的类型错误 : Object [object Object] has no method "fancybox"

javascript - FF 扩展 - 不保留全局变量值

html - 媒体查询适用于 chrome,但 firefox 选择了错误的分辨率/查询

javascript - JQuery 查找下一个输入的名称

javascript - 使用javascript更改字体大小

javascript - Jquery 获取类 "nodeId"值

html - Div 仅在 Firefox 中不可见?

javascript - 如何点击网页上没有id的按钮?