【问题标题】:Validate all fields at once with HTML5 instead of one at a time使用 HTML5 一次验证所有字段,而不是一次验证一个
【发布时间】:2015-09-29 16:56:51
【问题描述】:

有没有办法让 HTML5 一次验证所有字段,而不是一次验证一个?

使用几行 JavaScript 是可以的,但我真的不想为此使用整个模块。

我已经搜索了很多,但找不到一个干净的解决方案。

这是一个示例表单:

<html>
   <head>
      <title>Validation Test</title>
      <link href="css/style.css" rel="stylesheet">
   </head>
   <body>
      <form action="" id="myForm" method="post">
         <input id="name" name="name" required type="text">
         <input id="phone" name="phone" required type="text">
         <input type="submit" value="Submit">
      </form>
   </body>
</html>

Css 文件:

input:focus:required:invalid {
   border: 2px solid red !important;
}

建议作为可能重复的帖子是为了对一个字段有多个验证条件,我希望一次验证/显示所有无效字段。

【问题讨论】:

  • 谢谢,但那篇文章是为了对一个字段有多个验证条件,我希望一次验证/显示所有无效字段。
  • 您是在进行基本(无空字段)验证,还是进行更复杂的验证?
  • 您希望浏览器的默认验证错误消息同时显示所有无效元素吗?

标签: css html validation


【解决方案1】:

如果你不想使用 jQuery,那很好。您可以使用 vanilla js 事件处理程序和 DOM 选择器轻松完成此操作。我使用 jQuery 是为了节省时间。

$('#myForm').on('submit', function() {
  var $inputs = $(this).find(':input'),
      isValid = true;

  $inputs.each(function() {
    if ($(this).val() == '') {
      isValid = false;
      $(this).addClass('error-control');
    } else {
      $(this).removeClass('error-control');
    }
  });

  return isValid  
});

【讨论】:

  • 这实际上与我正在做的事情很好地配合,谢谢。
  • 对 JS 很陌生,你在代码中的哪个脚本标签中放置了“vanilla js 事件处理程序”?
【解决方案2】:

在表单标签上使用 onSubmit:

见:http://www.w3schools.com/js/js_validation.asp

  <form action="" id="myForm" method="post" onsubmit="return validateForm()">

Js:

function validateForm() {
    // validate form here
    // return false if there are errors
    // return true to submit the form
}

【讨论】:

  • 在验证所有字段之前不会触发提交事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2011-04-16
  • 2020-05-16
  • 2011-03-29
  • 1970-01-01
相关资源
最近更新 更多