如何验证单选按钮?

时间:2013-11-06 17:41:15

标签: javascript jquery html forms validation

我创建了以下表单: http://jsfiddle.net/baumdexterous/GYNSu/1/

我实现了一个适用于许多表单元素的验证脚本,但由于某种原因它不适用于单选按钮,所以目前用户可以提交表单而不选择其中一个必需的单选按钮。

如何使用此现有脚本启用单选按钮的验证?非常感谢。

    <ul>
        <li class="required">
            <label>What is the U.S. Capital? Please select your answer below:</label>
            <div class="questionsone">
                <input name="questionone" type="radio" value="a">a) New York<br>
                <input name="questionone" type="radio" value="b">b) Washington DC<br>
                <input name="questionone" type="radio" value="c">c) Seattle<br>
                <input name="questionone" type="radio" value="d">d) Portland<br>
            </div>
        </li>
    </ul>

更新:我有一个适用于现有验证的JavaScript部分。试图弄清楚如何添加一种检测单选按钮的方法:

    <script>
      $(function() {
          var root = $("#wizard").scrollable();
          // some variables that we need
          var api = root.scrollable(),
              drawer = $("#drawer");
          // validation logic is done inside the onBeforeSeek callback
          api.onBeforeSeek(function(event, i) {
              // we are going 1 step backwards so no need for validation
              if (api.getIndex() < i) {
                  // 1. get current page
                  var page = root.find(".page").eq(api.getIndex()),
                      // 2. .. and all required fields inside the page
                      inputs = page.find(".required :input").removeClass("error"),
                      // 3. .. which are empty
                      empty = inputs.filter(function() {
                          return $(this).val().replace(/\s*/g, '') == '';
                      });
                  // if there are empty fields, then
                  if (empty.length) {
                      // slide down the drawer
                      drawer.slideDown(function() {
                          // colored flash effect
                          drawer.css("backgroundColor", "#229");
                          setTimeout(function() {
                              drawer.css("backgroundColor", "#fff");
                          }, 1000);
                      });
                      // add a CSS class name "error" for empty & required fields
                      empty.addClass("error");
                      // cancel seeking of the scrollable by returning false
                      return false;
                      // everything is good
                  } else {
                      // hide the drawer
                      drawer.slideUp();
                  }
              }
              // update status bar
              $("#status li").removeClass("active").eq(i).addClass("active");
          });
          // if tab is pressed on the next button seek to next page
          root.find("button.next").keydown(function(e) {
              if (e.keyCode == 9) {
                  // seeks to next tab by executing our validation routine
                  api.next();
                  e.preventDefault();
              }
          });
      });
    </script>

6 个答案:

答案 0 :(得分:1)

单选按钮名称是否相同。将他们组合在一起。然后你所要做的就是让第一个人有checked="true"

<input name="question" type="radio" value="a" checked="true">a) New York<br>
<input name="question" type="radio" value="b">b) Washington DC<br>
<input name="question" type="radio" value="c">c) Seattle<br>
<input name="question" type="radio" value="d">d) Portland<br>

这使他们发送至少一件事。否则,您必须检查输入的选定值。

此外,所有文本输入都可以具有required属性,这样可以确保存在某些内容。 HTML5将其作为验证。

http://www.w3schools.com/tags/att_input_required.asp

修改 这是我刚刚使用jQuery制作的小提琴。这是您想要的真正验证。 http://jsfiddle.net/slyfox13/H9Dw2/

答案 1 :(得分:0)

您的收音机应该都具有相同的名称。在代码中,你实际上有4个不同的输入,每个输入作为自己的表格数据参数,而不是影响一个表格数据参数的4个无线电输入。

答案 2 :(得分:0)

输入名称不一定都必须相同,即然后检查questionone的值是否为null以进行验证

答案 3 :(得分:0)

为所有单选按钮设置相同的名称,因为可以选择单选按钮。

    <input name="questionone" type="radio" value="a">a) New York<br>
    <input name="questionone" type="radio" value="b">b) Washington DC<br>
    <input name="questionone" type="radio" value="c">c) Seattle<br>
    <input name="questionone" type="radio" value="d">d) Portland<br>

使用jQuery进行验证:

if($("input[type=radio,name=questionone]:checked").length >0)
{    
  /* do something */
}

答案 4 :(得分:0)

首先,您需要将单选按钮名称更改为同一个名称。前

<ul>
    <li class="required">
        <label>What is the U.S. Capital? Please select your answer below:</label>
        <div class="questionsone">
            <input name="question" type="radio" value="a">a) New York<br>
            <input name="question" type="radio" value="b">b) Washington DC<br>
            <input name="question" type="radio" value="c">c) Seattle<br>
            <input name="question" type="radio" value="d">d) Portland<br>
        </div>
    </li>
</ul>

这样你才能选择一个。接下来,您需要创建document.ready()函数。将此代码添加到document.ready()

$( document ).ready(function() {
    function RadioTest(){
    inputs = document.getElementsByName('question');
            for (index = 0; index < inputs.length; ++index) {
                if(inputs[index].checked!=true){
                                alert("radio not selected");
                                    return false;
                        }
            }

    }
});

答案 5 :(得分:0)

您必须为所有无线电输入标签指定相同的名称。 像这样

<div class="questionsone">
            <input name="qstn1" type="radio" value="a">a) New York<br>
            <input name="qstn1" type="radio" value="b">b) Washington DC<br>
            <input name="qstn1" type="radio" value="c">c) Seattle<br>
            <input name="qstn1" type="radio" value="d">d) Portland<br>
     </div>