你好,很棒的互联网。
我正在尝试实施 Braintree 付款,到目前为止一切都很好。我已经成功地实现了具有我自己的外观和感觉的自定义表单。一切都很好。
现在,我正在添加对我提交的额外数据的验证,例如运输说明和其他好东西。
为了进行验证,我读到我需要实现回调“onPaymentMethodReceived”,该回调与随机数提交流程一起按顺序调用......因此最终将提交表单,让我有时间运行额外的验证。那么我当然希望使用 JS 提交表单。
该文档还指出,我必须确保将随机数添加到我所做的表单中。
我遇到的问题是一切正常,直到我必须手动提交表单。控制台指出 form.submit 不是函数。
如何从回调中提交表单?
<script>
function launchValidation(obj){
//alert('launch validation')
alert('the nonce is ' + obj.nonce );
$(".payment_method_nonce").val(obj.nonce);
var form = document.getElementsByTagName('form')[0];
//validatePayForm()
form.submit(); // console says the function does not exist?
}
var jqxhr = $.get( "/CreateBrainTreeToken", function(data) {
braintree.setup( data, "custom", {
id: "checkout",
onPaymentMethodReceived: launchValidation
});
})
.done(function() {
//alert( "second success" );
})
.fail(function() {
//alert( "error" );
})
.always(function() {
//alert( "finished" );
});
</script>
在上面的代码中你可以看到我设置了选项:
onPaymentMethodReceived = onPaymentMethodReceived
如果我删除该行,则一切正常,因为自动提交没有拦截。问题是我需要验证,因此我需要在触发的回调中手动提交,并获取所有适当的数据。
那么为什么表单对象有些无效或者仍然被剥夺了像submit()这样的功能。
我希望在 JS 客户端随机数被获取(标记化)之后,可以手动提交表单。
我确信这是我忽略的简单事情。
Neil