Javascript 如何在Submit上获取表单以检查Google Checkout按钮的条款

Javascript 如何在Submit上获取表单以检查Google Checkout按钮的条款,javascript,html,forms,google-checkout,html-input,Javascript,Html,Forms,Google Checkout,Html Input,我正在使用Google Checkout,但onsubmit函数有问题 我设置了一个“同意条款”复选框,以便用户在继续结账之前必须接受条款。我正在调用HTML表单元素上的函数 function preCheckout() { if( !document.getElementById('terms').checked ) { // Requirements not accepted. $('.warning').animate({to

我正在使用Google Checkout,但onsubmit函数有问题

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

function preCheckout() {
        if( !document.getElementById('terms').checked ) {
            // Requirements not accepted.
            $('.warning').animate({top: -$('.warning').outerHeight()}, 500);
            return false;
        }
    }
其中包含google checkout按钮,如下所示:

<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>

我同意所有的条款和要求

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

我错过了什么?仅供参考

当您直接进入submit行时,它是self,您分别返回
true
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();">