【发布时间】:2019-09-20 08:41:24
【问题描述】:
我有一个 PDF 表单网关。用户提交表单,然后通过电子邮件接收 PDF 并将其重定向到 PDF url。我遇到的问题是,当所需的表单字段为空时,重定向似乎有效。在将用户重定向到 PDF 之前,我简要地看到了字段错误消息。我错过了什么吗?
这与Using JQuery - preventing form from submitting 不同。如果未填写必填字段,则 jQuery .submit() 和其中的内容不应该做任何事情。我添加了.preventDefault(),但在未填写必填字段的情况下单击提交按钮时它仍然会触发。
问题在于jQuery(location).attr('href', productDownloadFile) 行。如果没有填写正确的字段,这不应该发生。
我的代码:
jQuery('#gform_5').submit(function (e) {
e.preventDefault();
var pathname = window.location.pathname;
jQuery.cookie('cookie-name', pathname, {path: pathname}); // Set cookie to prevent multiple form entries.
// Close modal on form submit and redirect to the PDF.
setTimeout(function() {
jQuery('.pdf-gateway').removeClass('is-visible');
jQuery(location).attr('href', productDownloadFile); // productDownloadFile set in functions.
}, 3000);
});
【问题讨论】:
-
在这些字段上使用 HTML5 'required' 属性。
-
好像表单是通过AJAX提交的。在继续您的函数调用之前,您需要挂钩该 AJAX 响应并查看它是否成功。无论表单是否有效,您当前都在执行您的代码。此外,
e.preventDefault()将停止浏览器提交表单,但不会停止附加到submit事件的其他 JavaScript 处理程序。