4 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
您想要阻止提交表單的默認(rèn)行為。所以這樣做:
checkoutButton.addEventListener('click', function(event) {
...
if(isFormValid==true) {
event.preventDefault();

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
現(xiàn)在,click如果表單在頁面加載時(shí)有效,您的代碼僅附加偵聽器。在沒有其他表單行為的情況下,單擊表單中的按鈕會(huì)將其提交回其來源的頁面,這就是它看起來像頁面刷新的原因。
您需要將表單檢查移動(dòng)到按鈕單擊事件處理程序內(nèi),如下所示:
<script>
(function() {
var stripe = Stripe('pk_test_xxx');
var checkoutButton = document.getElementById('checkout-button-sku_xxx');
checkoutButton.addEventListener('click', function() {
if($('#tcform')[0].checkValidity()){
// When the customer clicks on the button, redirect
// them to Checkout.
stripe.redirectToCheckout({
items: [{
sku: 'sku_xxx',
quantity: 1
}],
// Do not rely on the redirect to the successUrl for fulfilling
// purchases, customers may not always reach the success_url after
// a successful payment.
// Instead use one of the strategies described in
// https://stripe.com/docs/payments/checkout/fulfillment
successUrl: window.location.protocol + '//www.xxx.com',
cancelUrl: window.location.protocol + '//www.xxx.com',
})
.then(function(result) {
if (result.error) {
// If `redirectToCheckout` fails due to a browser or network
// error, display the localized error message to your customer.
var displayError = document.getElementById('error-message');
displayError.textContent = result.error.message;
}
});
}
});
})();
但監(jiān)聽表單的submit事件可能會(huì)更好(https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event):
$('#tcform').on('submit', function() {
stripe.redirectToCheckout({
...
});
});
該submit事件僅在表單驗(yàn)證后才會(huì)發(fā)出。

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
你可以使用preventDefault
。您也可以只false
從事件返回 eventHandler?submit
,這也將取消表單提交。

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
這也發(fā)生在我們身上。
我們已將novalidate
屬性(刪除 HTML5 驗(yàn)證)添加到表單并僅通過 javascript 進(jìn)行驗(yàn)證。
????<form?id="tcform"?novalidate> ????... ????????</form>
- 4 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報(bào)