当回调触发手动表单提交时,jQuery表单提交处理程序未被禁用

时间:2017-04-19 03:36:06

标签: javascript jquery forms requirejs form-submit

我遇到一个问题,当我手动触发带有vanilla 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 - 但它并没有解决我如何捕获程序化提交的问题。

1 个答案:

答案 0 :(得分:0)

我想我在上面的edit中回答了我自己的问题。

基本上 - 事件仅在用户激活时触发 - 并且在代码激活时不会触发