0

我正在使用 Google Checkout,但 onsubmit 功能有问题。

我有一个“同意条款”复选框,以便用户在继续结帐之前必须接受条款。我在 HTML 表单元素上调用一个函数......

function preCheckout() {
        if( !document.getElementById('terms').checked ) {
            // Requirements not accepted.
            $('.warning').animate({top: -$('.warning').outerHeight()}, 500);
            return false;
        }
    }

其中包含谷歌结帐按钮,如下所示:

<form method="POST"
        action="https://sandbox.google.com..."
            accept-charset="utf-8" onsubmit="preCheckout();">

        <div>
            <input type="checkbox" id="terms" name="accept_terms" value="" />
            <p>I agree to all the terms and requirements...</p>
        </div>

        <input type="hidden" name="item_name_1" value="Simple Notes Monthly Subscription"/>
        <input type="hidden" name="item_description_1" value=""/>
        <input type="hidden" name="item_quantity_1" value="1"/>
        <input type="hidden" name="item_price_1" value=""/>
        <input type="hidden" name="item_currency_1" value="USD"/>
        <input type="hidden" name="shopping-cart.merchant-private-data" value="" />

        <input type="hidden" name="tax_rate" value="0.065"/>
        <input type="hidden" name="tax_us_state" value="UT"/>

        <input type="hidden" name="_charset_"/>

        <input type="hidden" name="continue-shopping-url" value="/thankyou.php" />

        <input type="image" name="Google Checkout" id="google-btn" alt="Fast checkout through Google"
        src="https://checkout.google.com/buttons/checkout.gif?merchant_id=id&w=180&h=46&style=trans&variant=text&loc=en_US"
        height="46" width="180"/>
    </div>
</form>

但是,无论是否选中复选框,页面都会继续。

我错过了什么?

4

1 回答 1

2

仅供参考这是我真正想问的问题

当你直接进入onsubmit它自己的行时,你分别返回trueor false,对吗?像这样:

onsubmit="return false;"

好吧,让我们分解一下您的代码中实际发生的事情。因为您可能会返回false您的代码,所以这是提交时可能发生的两种可能性。

onsubmit="false" // form is a success and performs form action
onsubmit="" // form is a success and performs form action

但是您真正要寻找的是onsubmit="return false;"左右onsubmit="return true;",这就是您需要做的:

function preCheckout() {
    if( !document.getElementById('terms').checked ) {
        // Requirements not accepted.
        $('.warning').animate({top: -$('.warning').outerHeight()}, 500);
        return false;
    }

    // return true if everything is fine
    return true;
}

然而,最重要的部分是:

<!-- all I did was add a "return" to your onsubmit -->
<form method="POST" action="https://sandbox.google.com..." accept-charset="utf-8" onsubmit="return preCheckout();">
于 2013-01-03T15:05:32.870 回答