gpt4 book ai didi

jquery - 从同一事件处理程序中触发 jquery 事件

转载 作者:行者123 更新时间:2023-12-01 01:36:14 27 4
gpt4 key购买 nike

我正在使用 Ajax 验证 Zend 表单,并提出了这个:

$('#some-dialog-i-have form').live('submit', function(e) {

e.preventDefault();

MyClass.Form.Validate($(this), function() {
// I wish to submit the form from this callback function
$(this).trigger('submit');

});
});

MyClass.Form.Validate 获取表单并执行 XHR 请求以检查表单是否有效。

我的问题是,如果表单有效,我希望继续提交表单,但如果无效,则停止一切操作。从该处理程序中触发提交显然会导致递归问题;解决这个问题的最佳方法是什么?

Form: {
Validate: function(form, onSuccess) {

$.ajax({
type: 'POST',
dataType: 'json',
url: '/ajax/form/validate',
data: form.serialize() + '&f=' + form.data('id')

}).done(function(errorMessages) {
if(errorMessages.count > 0) {
// Snip (display errors)
return false;
}
// Callback
onSuccess();
});
}
}
  • 我已经了解了 stopPropagation,但这对实时处理程序没有影响
  • 我知道 live() 处理程序已被弃用,我暂时忽略了更改它
  • 我考虑过通过 Ajax 简单地发布表单,但不确定是否要这样做

可能是一个简单的解决方案,但我今天的头不在正确的位置。

谢谢。

最佳答案

我想到的一件事是有一个变量来说明 Ajax 检查的结果是否表单有效。

如果该标志为 false,则运行 Ajax 验证。一旦 Ajax 验证返回有效,将标志设置为 true,然后当触发提交处理程序时,它会看到该标志并绕过检查并直接提交表单。

请记住,提交时表单仍应在服务器上进行验证,以防有人禁用 JS 或机器人尝试直接发布到服务器并跳过验证步骤。

希望有帮助。

关于jquery - 从同一事件处理程序中触发 jquery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com