.val使形式停止工作

时间:2013-04-25 10:03:25

标签: php javascript jquery forms

我有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 &rarr;';
        }
    });

您可以在the jsFiddlethe page itself

上找到其余内容

非常感谢您提供任何帮助我真的坚持这个!

1 个答案:

答案 0 :(得分:1)

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

您可以使用visibility:hidden,但它仍会占用空间。

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

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

position:absolute;
top: -9999px;
visibility:hidden;