我目前有一个表单,可以根据用户的操作单击两个提交按钮之一。一个按钮只会将表单提交到另一个 php 页面,另一个按钮将引入 Stripes 结帐覆盖,然后在填写完毕后,将提交到另一个 php 页面。如果表单无效,我希望我的 html5/jquery 验证停止覆盖。
目前,如果表单无效并且用户单击常规提交按钮,它什么也不做并显示需要更正的字段(我想要的)。如果表单无效并且用户单击 Stripe 覆盖按钮,则覆盖出现,但是当用户填写字段并单击提交时,覆盖消失并且没有任何反应,因为表单无效(它向用户显示了什么字段需要更正)。这并不理想,因为用户必须修复任何无效的字段,然后在提交之前再次填写覆盖表单。同样,我希望在表单完全有效之前,两个按钮都不做任何事情。
<button type='submit' name='saveSubmit' id='saveSubmit'>Save Order</button>
<button type='submit' name="customButton" id="customButton">Save Order and Pay</button>
和 jQuery 函数:
<script>
$(document).ready(function () {
$('form.h5-defaults').h5Validate();
});
$('form.h5-defaults').submit(function () { return $('form.h5-defaults').h5Validate('allValid'); });
$('#customButton').click(function(){
var token = function(res){
var $input = $('<input type=hidden name=stripeToken />').val(res.id);
$('form').append($input).submit();
};
var pennNewExtra = Math.abs(newExtra) * 100;
StripeCheckout.open({
key: 'xxxxxx',
amount: pennNewExtra,
currency: 'usd',
name: 'xxxxxx',
description: 'Add-Ons - $' + Math.abs(newExtra) + '.00',
panelLabel: 'Checkout',
token: token
});
return false;
});
</script>