所以我有一个单页应用程序,以及位于注册页面上的 Braintree 插件。有一个免费帐户的选项,所以我没有将嵌入的表单作为页面的主要表单。
所以我有一个这样的表格:
<form id="payment-form">
<div id="payment-box"></div>
<input type="submit" tabindex="-1" style="visibility:hidden;position:absolute;"/>
</form>
我在表单上有一个处理程序来阻止表单提交,并且在我的 Braintree 设置中,我定义了一个 paymentMethodNonceReceived
处理程序,但是当我触发表单时,页面会重新加载,具体取决于在网址上。如果您查看日志,则不会触发 paymentMethodNonceReceived
。
例如,我的注册网址是 domain.com/#!/register
但当触发表单时,它会重新加载到 domain.com/?#!/register
我理解的 code> 通常是同一页面,但不是像这样的单页面应用程序。这会触发页面重新加载并重置我的所有注册字段。如果您从 URL 的 ?#!
版本再次运行此命令,则它将按预期工作,不会重新加载,并且会触发处理程序。我不想为此添加 ?
到我的网址。
我真的很喜欢这个插件,并且觉得这个应该可以工作,但听起来我必须进行自定义实现。我有什么遗漏的吗?
最佳答案
所以我不完全理解为什么会出现这个问题,但是我提交的 e.preventDefault
没有触发,因为我发送的表单是:
$('#payment-form input[type="submit"]').click();
而不是类似的东西
$('#payment-submit').click();
无论如何,第一个仍然提交表单。与布伦特里无关。
关于javascript - 尽管有 paymentMethodNonceReceived,Braintree 仍会自动重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784172/