javascript - 如何在 jQuery 中验证是否所有复选框都被选中?

标签 javascript jquery validation

我是 jQuery 的初学者,我想知道如何在提交之前专门针对复选框验证表单。

我正在创建一个简单的检查列表表单,如果我的用户完成该步骤,他将在其中勾选一个复选框。我打算做的是,如果存在“未选中”复选框,脚本将阻止表单提交并用颜色突出显示。

这是我的代码:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Untitled Document</title>
    <style>
      .error {
        background-color: #F00;
      }
      .valid {
        background-color: #0F0;
      }
    </style>
    <script type="application/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js">    </script>
    <script type="application/javascript">
      $('#button').on('click', function() {
        var $checkboxes = $('.container [type=checkbox]');

        $checkboxes.filter(':checked').parent().removeClass('error').addClass('valid');
        $checkboxes.not(':checked').parent().removeClass('valid').addClass('error');
      });
    </script>
  </head>

  <body>
    <div class="container">
      <input class="tick" id="option1" type="checkbox">
    </div>
    <div class="container">
      <input class="tick" id="option1" type="checkbox">
    </div>
    <input id="button" type="button" value="check">
  </body>
</html>

所以我在这里想做的是,当用户单击按钮时,脚本将用红色突出显示所有未选中的复选框,并用绿色突出显示所有选中的复选框。

但是,我的脚本无法运行。我的脚本有什么问题吗?关于更有效的方法有什么建议吗?

最佳答案

尝试以下操作:

$(document).ready(function(){
    var len = $('input[type=checkbox]').length;

    $('#button').click(function(e){
        var $cb = $('input[type=checkbox]');
        $cb.filter(':checked').parent().removeClass('error');
        var not = $cb.not(':checked').parent().addClass('error').length;
        if (len == not) {
            e.preventDefault(); // prevent the default action of the event
        }
    })​
})

http://jsfiddle.net/2dcPE/

请注意,您的标记无效,ID 必须是唯一的。

关于javascript - 如何在 jQuery 中验证是否所有复选框都被选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613620/

相关文章:

java - 带有 BindingResult 属性的 Spring Validation 永远不会命中目标 Controller 方法

javascript - getCurrentPosition成功回调如何传参?

javascript - ngModel 绑定(bind)未触发 Angular 输入事件

javascript - 在提交表单之前检查文件是否已上传

javascript - 单击按钮时更改表单(多步表单)- 没有 Bootstrap

apache-flex - Flex数据网格: Programmatically Highlighting Rows

javascript - 自动生成表单的 AngularJS 表单验证

javascript - 使用 Karma 运行测试时使用 PhantomJS 单步执行代码

javascript - React Native 在运行时动态注入(inject)组件

javascript - jQuery 3.x 中的 jqXHR 对象是否仍支持 .done 方法?