【问题标题】:Error validation for a radio button in HTMLHTML 中单选按钮的错误验证
【发布时间】:2016-06-20 06:44:24
【问题描述】:

我正在使用 W3 验证器验证我的 HTML,当它检查我的页面时,我收到了一个验证错误:

标签元素最多可以包含一个按钮,输入,keygen, 仪表、输出、进度、选择或文本区域后代。从线 136,第 33 栏;到第 136 行,第 76 列 2 拉丁

我不完全确定出了什么问题,因为据我所知,我在标签中只使用了一种输入类型。

这是我的代码:

<label> Rating
  <br>

  <input type="radio" name="rating" value="1"> 1
  <br>
  <input type="radio" name="rating" value="2"> 2
  <br>
  <input type="radio" name="rating" value="3"> 3
  <br>
  <input type="radio" name="rating" value="4"> 4
  <br>
  <input type="radio" name="rating" value="5"> 5
  <br>
  <input type="radio" name="rating" value="6"> 6
  <br>
  <input type="radio" name="rating" value="7"> 7
  <br>
  <input type="radio" name="rating" value="8"> 8
  <br>
  <input type="radio" name="rating" value="9"> 9
  <br>
  <input type="radio" name="rating" value="10"> 10
  <br>

</label>

无论哪种方式,网页都可以正常工作,如果可能,我想修复验证。

如果需要,这是我整个页面的代码:

<!doctype html>
<html>

  <head>

    <meta charset="utf-8">
    <title>Contact</title>

    <link rel="stylesheet" type="text/css" href="Bootstrap/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="css/Slideshow.css">
    <link rel="stylesheet" type="text/css" href="css/page.css">

    <div class="container">

      <div class="row">

        <div class="col-md-12">

          <h1> Nathan Rivera </h1>

          <h1> Portfolio </h1>

        </div>

      </div>

    </div>


    <script>
      function checkforblank() {

        if (document.getElementById('name').value == "") {
          alert("Entry can't be empty");
          document.getElementById('name').style.borderColor = "red";
          return false;
        }

        if (document.getElementById('email').value == "") {
          alert("Entry can't be empty");
          document.getElementById('email').style.borderColor = "red";
          return false;
        }




        var radios = document.getElementsByName("rating");
        var formValid = false;

        var i = 0;
        while (!formValid && i < radios.length) {
          if (radios[i].checked) formValid = true; {
            i++;
          }
        }

        if (!formValid) {
          alert("Please Pick Rating");
          return formValid;
          document.getElementsByName("rating").style.borderColor = "red";
        }

      }

    </script>


  </head>

  <body>

    <div class="container">

      <div class="row" id="inner">

        <div class="col-lg-12 center">

          <ul class="nav nav-pills">

            <li><a href="index.html">Homepage</a></li>

            <li><a href="Portfolio.html">Portfolio</a></li>

            <li><a href="Projects.html">Projects</a></li>

            <li><a href="Contact.html">Contact</a></li>

            <li class="active"><a href="Survey.html">Survey</a></li>

          </ul>

        </div>

      </div>

      <div class="row">

        <div class="col-md-12">

          <form method="post" action "#" onSubmit="return checkforblank()">

            <fieldset>

              <label> Name:
                <br>

                <input type="text" id="name" name="name">

              </label>

              <br>
              <br>

              <label> Email:
                <br>

                <input type="text" id="email" name="email">

              </label>


              <br>
              <br>

              <label> Rating
                <br>

                <input type="radio" name="rating" value="1"> 1
                <br>
                <input type="radio" name="rating" value="2"> 2
                <br>
                <input type="radio" name="rating" value="3"> 3
                <br>
                <input type="radio" name="rating" value="4"> 4
                <br>
                <input type="radio" name="rating" value="5"> 5
                <br>
                <input type="radio" name="rating" value="6"> 6
                <br>
                <input type="radio" name="rating" value="7"> 7
                <br>
                <input type="radio" name="rating" value="8"> 8
                <br>
                <input type="radio" name="rating" value="9"> 9
                <br>
                <input type="radio" name="rating" value="10"> 10
                <br>

              </label>

              <br>
              <br>

              <div class="form-group">

                <label for="comments">Comments:</label>
                <textarea class="form-control" rows="5" id="comments"></textarea>

              </div>

            </fieldset>

          </form>

          <form action="javascript:alert('Thank You For Your Input')" method="get" onSubmit="return checkforblank()">

            <input type="submit" value="Submit">

          </form>

        </div>

      </div>

    </div>

    </div>


    <script src="Bootstrap/js/bootstrap.js"></script>
    <script src="Jquery/jquery-1.12.3.js"></script>
  </body>

</html>

【问题讨论】:

  • 快速提问....为什么你用 JS 来做这件事,而你可以用 jQuery 来做这件事?
  • 因为我还没有弄清楚如何使用jquery。总的来说,JavaScript 真的让我很困惑。
  • 在你的项目中包含一个 jQuery 文件,你可以得到这样的元素,例如: if($('email').val()=="")... 这样你可以写更清洁、更高效的代码... :)
  • 感谢您的提示。我刚刚也学会了如何使用引导程序。

标签: html validation label


【解决方案1】:

您的代码中有太多错误。

首先,&lt;head&gt; 中有 &lt;div&gt;&lt;h1&gt; 元素。你不能那样做。

那你的&lt;label&gt;中有&lt;br&gt;标签,这也是不允许的。

然后在你的表单调用中你有action"#"而它应该是action="#"

最后还有一个额外的结尾&lt;/div&gt;

所以你的代码应该是这样的:

<!doctype html>
<html>

  <head>

    <meta charset="utf-8">
    <title>Contact</title>

    <link rel="stylesheet" type="text/css" href="Bootstrap/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="css/Slideshow.css">
    <link rel="stylesheet" type="text/css" href="css/page.css">

    <script>
      function checkforblank() {

        if (document.getElementById('name').value == "") {
          alert("Entry can't be empty");
          document.getElementById('name').style.borderColor = "red";
          return false;
        }

        if (document.getElementById('email').value == "") {
          alert("Entry can't be empty");
          document.getElementById('email').style.borderColor = "red";
          return false;
        }




        var radios = document.getElementsByName("rating");
        var formValid = false;

        var i = 0;
        while (!formValid && i < radios.length) {
          if (radios[i].checked) formValid = true; {
            i++;
          }
        }

        if (!formValid) {
          alert("Please Pick Rating");
          return formValid;
          document.getElementsByName("rating").style.borderColor = "red";
        }

      }

    </script>


  </head>

  <body>
    <div class="container">

      <div class="row">

        <div class="col-md-12">

          <h1> Nathan Rivera </h1>

          <h1> Portfolio </h1>

        </div>

      </div>

    </div>
    <div class="container">

      <div class="row" id="inner">

        <div class="col-lg-12 center">

          <ul class="nav nav-pills">

            <li><a href="index.html">Homepage</a></li>

            <li><a href="Portfolio.html">Portfolio</a></li>

            <li><a href="Projects.html">Projects</a></li>

            <li><a href="Contact.html">Contact</a></li>

            <li class="active"><a href="Survey.html">Survey</a></li>

          </ul>

        </div>

      </div>

      <div class="row">

        <div class="col-md-12">

          <form method="post" action="#" onSubmit="return checkforblank()">

            <fieldset>

              <label for="name"> Name: </label>
              <input type="text" id="name" name="name">
              <br>
              <br>

              <label for="email"> Email: </label>
              <input type="text" id="email" name="email">
              <br>
              <br>

              <label> Rating </label> <br>

              <input type="radio" name="rating" value="1"> 1
              <br>
              <input type="radio" name="rating" value="2"> 2
              <br>
              <input type="radio" name="rating" value="3"> 3
              <br>
              <input type="radio" name="rating" value="4"> 4
              <br>
              <input type="radio" name="rating" value="5"> 5
              <br>
              <input type="radio" name="rating" value="6"> 6
              <br>
              <input type="radio" name="rating" value="7"> 7
              <br>
              <input type="radio" name="rating" value="8"> 8
              <br>
              <input type="radio" name="rating" value="9"> 9
              <br>
              <input type="radio" name="rating" value="10"> 10
              <br>
              <br>

              <div class="form-group">

                <label for="comments">Comments:</label>
                <textarea class="form-control" rows="5" id="comments"></textarea>

              </div>

            </fieldset>

          </form>

          <form action="javascript:alert('Thank You For Your Input')" method="get" onSubmit="return checkforblank()">

            <input type="submit" value="Submit">

          </form>

        </div>

      </div>

    </div>


    <script src="Bootstrap/js/bootstrap.js"></script>
    <script src="Jquery/jquery-1.12.3.js"></script>
  </body>

</html>

如果你在验证器中检查它,你会发现没有错误。

并且,以后在此处发布问题之前,请仔细检查您的代码。

【讨论】:

  • 非常感谢。我对 HTML 比较陌生。
【解决方案2】:

标签用于一个输入,您使用的是 10 个输入中的一个。
这是一个很好的例子,说明你如何实现你的目标:

<fieldset>
  <legend> Rating </legend>
   <label> <input type="radio" value="1" name="rating"> 1 </label>
   <label> <input type="radio" value="2" name="rating"> 2 </label>
   <!-- etc -->
 </fieldset>

本文改编自post
有关工作fieldsets 的更多数据,请查看this article

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2015-01-04
    • 2011-10-18
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多