我有this checkout page(您必须添加项目)使用this jsFiddle中显示的JavaScript / jQuery来显示/隐藏单独的送货地址的某些字段。显示时,我将所有字段的值设置为''
,隐藏时我将字段的值设置为与计费表单中的相应字段相同。
当您提交表格时,您应该被带到paypal登录屏幕(尝试填写表格而不切换不同的送货地址并提交)但是如果您切换送货地址,它就会回到同一页面。
我已经进行了足够的调试,知道它正在使用.val()
来修改正在破坏表单的字段。如果我注释掉这些位并使用开发工具手动切换可见性,或者如果我填写结算表单并且从不显示/隐藏运费(因此永远不会调用.val()
),那么一切正常。
如果您要查看该页面并尝试一下,您知道它是否成功,如果您进入paypal屏幕,否则它只是回到同一页面(表单的操作是同一页面,但我找不到任何处理数据的东西 - 可以找到完整的php页面here - 它是WPEC's shopping cart page
的修改版本以下是(大部分)相关的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 →';
}
});
您可以在the jsFiddle和the page itself
上找到其余内容非常感谢您提供任何帮助我真的坚持这个!
答案 0 :(得分:1)
我认为问题在于您使用display:none隐藏“不同的送货地址”。当输入字段显示为none时,它将不会与您的公式一起发送。因此,它会将您重定向回结帐页面。
您可以使用visibility:hidden,但它仍会占用空间。
但我强烈建议你不要这样做,因为如果用户关闭了javascript,它将无法正常工作。您应该发送所有字段,并在php中检查是否已提交不同的地址字段,如果有,请使用它们。
修改:您可以使用位置将它们放置在窗口之外,例如:
position:absolute;
top: -9999px;
visibility:hidden;