1

我有以下一组 Javascript/jQuery sprint 来处理表单提交:

     $('#addtocart').click(function (e){

        // No Accessories: normal submit
        if ($('#accessories ul li').size()==0) {
            $('#quickbuyform').submit();
            return true;
        }
        strName = "<?php echo $_product->getName() ?>";

        // Pop with loading
        popAccessories();
        $('.pop_accessories_area_button').show();$('.pop_accessories_area_button').show();
        e.preventDefault();
    });


    $('#nothanks').click( function (){
        $('#quickbuyform').unbind('submit').submit();
    });

    $('.aceimg').click( function (){    
        $('#quickbuyform').unbind('submit').submit();
    });

要求:所以你可以看到什么时候addtocart被点击它检查是否有任何匹配的配件适用于这个特定的产品。如果没有,只需提交表格。如果有附件,则一个div部分将显示为弹出窗口。从该弹出窗口中,如果用户单击任何附件产品,则应提交quickbuyform.

问题:现在表单提交变得如此随机。有时它会提交表单,而其他时候则不会。

帮助:任何人都可以看到,我在这里做错了什么......?

谢谢

4

2 回答 2

1

这似乎是问题所在:

在你的里面<div class="aceimg>你有一个<a href="some-product-link.html">

实际上,浏览器<a>在评估您的 JQuery 之前开始转到标记中的链接。

您可以做的是删除链接(因为它只是为了选择配件而不是查看它)。

如果您需要任何进一步的帮助,请告诉我们。

于 2013-01-10T04:41:32.353 回答
0

这里有几件事可能会出错,尤其是间歇性的:

  • 如果 $_product->getName() 未设置或由于任何原因在 PHP 中引发错误,它将根据您的服务器配置将错误消息(包括 HTML 格式)放入 strName 的值中。这通常会破坏 js 并导致它停止工作。检查您的错误控制台以获取语法错误消息。

为什么你需要这样做两次:

$('.pop_accessories_area_button').show();$('.pop_accessories_area_button').show();

和这个:

$('#quickbuyform').unbind('submit').submit();

而不是这个:

$('#quickbuyform').submit();

这表明您可能一次在页面上拥有多个这些表单,并且您正在尝试解决它。您可能正在提交不可见的表格,而不是您打算提交的表格,等等。

这不是一个真正的解决方案,我将不得不看到更多您正在查看的内容,但我遇到了上述情况。

我刚刚检查过,您这里也有 404 错误:

http://www.impressiveinvitations.com.au/skin/frontend/dreamday/imtheme/js/jquery.form.js

这可能与它有关...

于 2013-01-10T04:28:16.487 回答