【问题标题】:HTML5 Form validation in Firefox vs. ChromeFirefox 与 Chrome 中的 HTML5 表单验证
【发布时间】:2015-07-31 11:23:23
【问题描述】:

我有一个简单的联系表单,我正在使用 HTML5 表单验证:

input.form-control#email(type='email', name='fromEmail', required='required', value='', placeholder='Email')

为了提交表单,我在提交按钮的单击上进行 JSON 发布。在 Firefox 中,表单会正确验证,提示用户填写他们错过的空白必填字段。但是,在 Chrome 中,单击提交按钮会跳过验证并引发错误。我应该更改什么以确保 Chrome 关注 HTML5 表单验证吗?

$('#submit').on('click', function (argument) {
  event.preventDefault();
  utils.postJSON('/form', utils.getJsonFromForm("form#contact-form")).done(function (data) {
    if (data.error) return;
    utils.flash.success("Thanks for contacting us!");
  });
});

非常感谢任何反馈。

【问题讨论】:

  • 错误是什么?似乎这是这里的关键点。

标签: html forms validation


【解决方案1】:

这是一篇可能对您的事业有所帮助的 stackoverflow 文章:How to force a html5 form validation without submitting it via JavaScript/jQuery。它建议以下代码:

var $myForm = $('#myForm'); 
if (!$myForm[0].checkValidity()) {
  // If the form is invalid, submit it. The form won't actually submit;
  // this will just cause the browser to display the native HTML5 error messages.
  $myForm.find(':submit').click()
}

您可以添加一个 else 子句,然后执行上面的逻辑。希望这会有所帮助。

【讨论】:

  • 谢谢!正是我想要的:)
  • @codeexplorer “不适用”是什么意思?这是一个四年前的问题,因此可能需要更多信息。 Chrome 74 一个月前问世了,但我刚刚在 Chrome [版本 74.0.3729.169 (Official Build) (64-bit)] 中使用 jQuery 3.3.1 对其进行了测试,并且成功了。然后我升级到 3.4.1 并再次测试它仍然可以工作。如果您看到了什么,我可以尝试调整答案,但它似乎仍然有效。您使用的是什么版本的 jQuery?你的 HTML 是什么样的?
  • @cfnerd html 是 <input value="" onchange="validateMACA(this)" name="mac">,js 是 function validateMACA(name) { const $selected = $("input[name=mac]"); $selected[0].setCustomValidity("......"); $selected[0].reportValidity(); $('#net').find(':submit').click(); },jQuery 是 v2.2.4。
  • @codeexplorer 您的代码与所要求/解决的代码大不相同。因此你的问题是不同的。 your$selected 变量设置为输入,而不是像提供的答案那样的整个表单。检查控制台以查看您的问题。
  • @cfnerd 你能解释一下吗?
猜你喜欢
  • 2012-10-06
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多