我使用validate.js来验证表单。如果表单未验证,则在用户尝试提交表单时会显示一条消息,显示错误。如果用户通过验证,则会弹出成功消息。问题是,表单实际上并不发送/执行操作,因为validate.js阻止了默认行为。
阻止表单发送的代码是:
if (event && event.preventDefault) {
event.preventDefault();
} else if (event) {
event.returnValue = false;
}
你可以在这里看到完整的js:http://jsfiddle.net/DBfks/
在我看来,如果表单没有通过验证,上面的代码会阻止表单提交的默认行为,但如果确实如此,那么表单应该提交。它是否正确?关于如何使表单提交INSTEAD以显示成功消息的任何想法(请参阅jsfiddle以了解成功和错误消息如何工作)
提前致谢。您可以看到有效的演示here。
答案 0 :(得分:1)
添加
$("#myForm").submit();
您要提交表单的位置。
在你的jsFiddle中你得到了这个if / else:
if (errors.length > 0) {
SELECTOR_ERRORS.empty();
for (var i = 0, errorLength = errors.length; i < errorLength; i++) {
SELECTOR_ERRORS.append(errors[i].message + '<br />');
}
SELECTOR_SUCCESS.css({ display: 'none' });
SELECTOR_ERRORS.fadeIn(200);
} else {
SELECTOR_ERRORS.css({ display: 'none' });
SELECTOR_SUCCESS.fadeIn(200);
}
(好吧,复制粘贴有点搞砸了!)
因此,如果有任何错误,请将错误添加到错误框并显示它。否则显示你验证了它。但这不是你想要的,你应该在那里提交表格:
else {
$("#yourform").submit();
}
答案 1 :(得分:-1)
代码无法使用jQuery提交的原因是因为preventDefault方法阻止了jQuery提交表单。解决方法是简单地删除这些行:
if (event && event.preventDefault) {
event.preventDefault();
} else if (event) {
event.returnValue = false;
}