我遇到了一个问题,当我使用香草 JavaScript 手动触发带有类"reCaptchaForm"的表单提交时,我的表单的提交处理程序没有被调用,如下面的代码片段所示。
我有onReCaptchaSuccess
回调,它将手动提交表单,但是当我这样做时,不会调用提交处理程序 - 当我在浏览器中使用具有"提交"类型的<button>
原生提交表单时,它会起作用。
在我的表单所在的模板中:
<script type="text/javascript">
require(['crmpicco/coursedetails'], function(details) {
details.init();
});
function onReCaptchaSuccess(token) {
document.getElementsByClassName("reCaptchaForm")[0].submit();
}
</script>
我的 RequireJS 模块coursedetails.js
:
define('crmpicco/coursedetails', [
'jquery',
'intl-tel-input',
'jstz'
], function($) {
var CourseDetails = {
init: function() {
this.initPhoneNumber();
},
initPhoneNumber: function() {
// ...some field cloning in here...
originField.closest('form').submit(function() {
// this form submit handler is never envoked!
});
},
};
return CourseDetails;
});
我猜我在这里错过了一些明显的东西,但我不明白为什么这里没有调用提交处理程序,因为我的理解是这应该冒泡。
编辑:好的,我现在已经读到了这个敲响了铃铛。 https://stackoverflow.com/a/645556/691505 - 但它并不能解决我如何捕获编程提交的问题。
我想我在上面的编辑中回答了我自己的问题。
本质上 - 事件仅在用户激活时触发 -并且在被代码激活时不会触发。