0

Google Checkout を使用していますが、onsubmit 機能に問題があります。

ユーザーがチェックアウトを続行する前に条件に同意する必要があるように、「条件に同意する」チェックボックスを配置しました。HTML フォーム要素で関数を呼び出しています...

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

次のようなGoogleチェックアウトボタンが含まれています。

<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あなたが自分自身のラインに入るとき、あなたはそれぞれtrueまたはを返しますよfalseね?そのようです:

onsubmit="return false;"

さて、コードで実際に何が起こっているのかを分析してみましょう。コードを返す可能性があるためfalse、送信時に発生する可能性のある2つの可能性を次に示します。

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 に答える