jquery.submit 事件函数
jquery.submit function with event
我们正在用 google recaptcha v3 编写一个表单。表单需要在实际提交之前获取令牌。一位同事编写了这段代码并且它有效,表单提交没有任何问题。但我很困惑为什么它会起作用?为什么在递归调用 .submit() 函数时它不会陷入无限循环?
jQuery.fn.extend({
grecaptcha: function (options) {
this.submit(function (e) {
e.preventDefault();
var key = options["recaptcha_site_key"];
var acdata = options["action_data"];
var ele = this;
grecaptcha.execute(key, { action: acdata }).then(function (token) {
$("<input>")
.attr({
type: "hidden",
name: "g-recaptcha-response",
value: token,
}).appendTo($(ele));
ele.submit();
});
});
},
});
$("#formID").grecaptcha(option);
是否有其他更好的方法在提交前请求令牌?
每个:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit
This method is similar, but not identical to, activating a form's submit . When invoking this method directly, however:
No submit event is raised. In particular, the form's onsubmit event handler is not run.
您的代码示例未调用 jQuery 方法来触发表单上的提交事件。事实上,这会导致循环。尝试包装 ele
变量 jQuery。 $(ele).submit ()
应该会导致循环。通过不在 jQuery 对象中包装对 this
(e.currentTarget) 的引用,而是调用 DOM 提交函数,您提交表单时不会触发事件或 运行 处理程序。
有道理吗?
我们正在用 google recaptcha v3 编写一个表单。表单需要在实际提交之前获取令牌。一位同事编写了这段代码并且它有效,表单提交没有任何问题。但我很困惑为什么它会起作用?为什么在递归调用 .submit() 函数时它不会陷入无限循环?
jQuery.fn.extend({
grecaptcha: function (options) {
this.submit(function (e) {
e.preventDefault();
var key = options["recaptcha_site_key"];
var acdata = options["action_data"];
var ele = this;
grecaptcha.execute(key, { action: acdata }).then(function (token) {
$("<input>")
.attr({
type: "hidden",
name: "g-recaptcha-response",
value: token,
}).appendTo($(ele));
ele.submit();
});
});
},
});
$("#formID").grecaptcha(option);
是否有其他更好的方法在提交前请求令牌?
每个: https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit
This method is similar, but not identical to, activating a form's submit . When invoking this method directly, however:
No submit event is raised. In particular, the form's onsubmit event handler is not run.
您的代码示例未调用 jQuery 方法来触发表单上的提交事件。事实上,这会导致循环。尝试包装 ele
变量 jQuery。 $(ele).submit ()
应该会导致循环。通过不在 jQuery 对象中包装对 this
(e.currentTarget) 的引用,而是调用 DOM 提交函数,您提交表单时不会触发事件或 运行 处理程序。
有道理吗?