【问题标题】:Using jQuery Validate plugin submitHandler to fire fancybox window使用 jQuery Validate 插件 submitHandler 来触发 fancybox 窗口
【发布时间】:2010-07-16 11:47:25
【问题描述】:

我在网站上同时使用 jQuery Validate 和 Fancybox 来加载表单提交时的模态 Fancybox 窗口(在通过 Validate 验证后)以确认订单正在处理中,但遇到了一个我无法解决的奇怪问题. 标签与表单在同一页面如下:

<a href="<?=ssl_url()?>basket/processing" class="processing" id="submit_holder">PROCESSING</a>

在 JS 文件中,我有以下 Fancybox 配置:

$(".processing").fancybox({
    'padding'       : 0,
    'width'  : 400,
    'height' : 400,
    'modal'         : true,
    'overlayColor'  : '#fff',
    'overlayOpacity': 0.8,
    'autoScale'     : true,
    'type'  : 'iframe',
    'transitionIn' : 'fade',
    'transitionOut' : 'fade',
    'titlePosition' : 'inside'
});

现在,直接单击此链接可以正常工作 - 按预期加载。尝试通过 Validate 的 submitHandler 启动时:

       submitHandler: function(form) {
            $('#submit_holder').click();
            form.submit();
       }

Fancybox 本身加载但完全空白。我无法查看任何源代码,也无法在新窗口中打开框架,这几乎就像 Fancybox 没有将 标记的 href 属性作为 iframe src 获取一样。

有人可以帮忙吗?这让我彻底疯了。

谢谢,马特

【问题讨论】:

    标签: jquery iframe jquery-validate submit fancybox


    【解决方案1】:

    您是否尝试过$('#submit_holder').trigger('click'); 而不是$('#submit_holder').click(); 并尝试在其他浏览器中查看是否是浏览器问题。

    【讨论】:

    • 您好罗伯特,感谢您的及时回复。是的,我已经尝试过 .trigger() 并跨多个浏览器(最初应该注意到这一点) - 奇怪的是带有配置的框本身加载它只是不加载源(框架内容)。
    • 在带有表单的页面上的浏览器中,在 URL 地址中输入以下 javascript: $('#submit_holder').click(); - 这将告诉我 .Click() 是否失败或 SubmitHander
    • 这确实正确启动了盒子 - 有趣,还有其他想法吗?
    • 好的,现在你知道它不是 Click() 方法了。删除 form.submit();这现在将告诉我表单事件是否在提交期间禁用了所有其他操作!并确保使用return false; 来防止表单执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多