如何截取JavaScript触发的表单提交?

时间:2019-03-12 17:26:48

标签: javascript jquery forms spam spam-prevention

是否可以拦截由JavaScript触发的表单提交?

我正在尝试通过执行一些客户端验证(借助reCAPTCHA v2的帮助,来减少来自bot的表单垃圾邮件提交)。当用户提交表单时,我可以通过检查通过表单的onSubmit属性指定的方法中的标志来确认输入数据已被验证(reCAPTCHA已填写)。

<form ... id="my_form" onSubmit="submitHandler()">

function submitHandler(e) {
    if ( !valid ) {
        e.preventDefault();
    }
}

...或者在通过jQuery .submit()事件处理程序定义的方法中:

$('#my_form').submit(function(e) {
    if ( !valid ) {
        e.preventDefault();
    }
});

问题在于,通过JavaScript提交表单时,这些方法似乎都没有被调用。当我打开控制台并测试通过JavaScript提交...

document.getElementById('my_form').submit()

...表单提交,两个方法均未调用。表单提交事件似乎没有被触发,因此我无法检查数据是否已通过验证。

大概是这种基于JavaScript的表单提交,这是Spambots用来提交表单的方法-跟踪这些事实并未减少表单垃圾邮件的事实。他们能够绕过我的支票。

需要明确的是,第三方表单服务在实际的字段验证服务器端进行了繁重的工作。我只是试图首先减少发送到其服务器的垃圾邮件数量。

是否可以拦截基于JavaScript的表单提交?我采用的是错误的方法吗?

编辑:为澄清起见,通过表单的“提交”按钮提交表单时,将调用onsubmit方法 。但是当通过JavaScript(.submit())提交表单时,不会调用它。

0 个答案:

没有答案