0

我有这个结帐页面(您必须添加一个项目),它使用在这个 jsFiddle中看到的 JavaScript / jQuery来显示/隐藏一些字段以获取单独的送货地址。显示时,我将所有字段的值设置为'',隐藏时我将字段的值设置为与计费表单中它们各自的字段相同。

当您提交表单时,您应该被带到贝宝登录屏幕(尝试填写表单而不切换不同的送货地址并提交),但如果您切换送货地址,它只会返回到同一页面。

我已经调试到足以知道它正在修改字段,.val()这会破坏表单。如果我注释掉这些位并使用开发工具手动切换可见性,或者如果我填写账单表格并且从不显示/隐藏运输(所以.val()从不调用),一切正常。

如果您要查看该页面并尝试一下,如果您进入贝宝屏幕,您就知道它成功了,否则它只是回到同一页面(表单的操作是同一页面,但我可以'找不到任何处理数据的东西 - 完整的 php 页面可以在这里找到- 它是WPEC 购物车页面的修改版本

这是(大部分)相关的JavaScript:

$('#reveal-shipping').click(function(){
        if ( $('.wpsc_checkout_table.table-2').is(':animated') ) return; 
        if( $('.wpsc_checkout_table.table-2').css('display') == 'none' ){
            $('.wpsc_checkout_table.table-2').slideToggle();
            $('.wpsc_checkout_table.table-2').find('input, select, textarea').val(''); 
            document.getElementById('reveal-shipping').innerHTML = 'Ship to my billing address ←';
        } else {
            for ( i=0; i < fields.length; i++ ){
                thisval = $(fields[i][0]).val();
                $(fields[i][1]).val( thisval );
            }
            $('.wpsc_checkout_table.table-2').slideToggle();
            document.getElementById('reveal-shipping').innerHTML = 'Ship to a different address &rarr;';
        }
    });

您可以在 jsFiddle页面本身上找到其余部分

非常感谢任何帮助我真的坚持这一点!

4

1 回答 1

1

我认为问题在于您正在使用 display: none 来隐藏“不同的送货地址”。当输入字段显示无时,它不会与您的公式一起发送。因此,它会将您重定向回结帐页面。

您可以使用可见性:隐藏,但它仍然会占用空间。

但我强烈建议您不要这样做,因为如果用户关闭了 javascript,它将无法工作。您应该发送所有字段并在 php 中检查是否已提交不同的地址字段,如果已提交,请使用它们。

编辑:您可以使用位置将它们放在窗口之外,例如:

position:absolute;
top: -9999px;
visibility:hidden;
于 2013-04-25T10:23:11.323 回答