尽管有 paymentMethodNonceReceived,Braintree 自动重新加载

Braintree drop-in auto-reload despite paymentMethodNonceReceived

所以我有一个单页应用程序,并且在注册页面上有一个 braintree 插件。有一个免费帐户的选项,所以我没有将 drop-in 里面的表单作为页面的主要表单。

所以我有这样的表格:

<form id="payment-form">
    <div id="payment-box"></div>
    <input type="submit" tabindex="-1" style="visibility:hidden;position:absolute;"/>
</form>

我在表单上有一个处理程序来阻止表单提交,在我的 braintree 设置中,我定义了一个 paymentMethodNonceReceived 处理程序,但是当我触发表单时,页面会重新加载,具体取决于url。如果您查看日志,则不会触发 paymentMethodNonceReceived

例如,我的 url 用于注册的是 domain.com/#!/register 但是当表单被触发时,它会重新加载到 domain.com/?#!/register 我知道这通常是同一页面,但不是像这样的单页应用程序。这会触发页面重新加载并重置我所有的注册字段。如果您从 url 的 ?#! 版本再次 运行 这一次,那么它会按预期工作,不会重新加载并触发处理程序。我不想为此添加 ? 到我的 url。

我真的很喜欢这个插件,感觉 应该 工作,但听起来我将不得不进行自定义实现。有什么我想念的吗?

所以我不完全理解为什么会出现这个问题,但是我提交的 e.preventDefault 没有触发,因为我发送的表单包含:

$('#payment-form input[type="submit"]').click();

而不是像

$('#payment-submit').click();

无论如何,第一个仍然提交表单。与布伦特里无关。