【问题标题】:Testing if a checkbox is checked with jQuery使用 jQuery 测试复选框是否被选中
【发布时间】:2011-06-16 08:10:25
【问题描述】:

如果复选框被选中,那么我只需要将值设为1;否则,我需要将其设置为 0。如何使用 jQuery 执行此操作?

$("#ans").val() 在这种情况下总是会给我一个权利:

<input type="checkbox" id="ans" value="1" />

【问题讨论】:

  • .val() 是获取value属性,而不是检查状态。 value 属性可以是任何东西,它不需要是布尔值。
  • 如果你还在,你可能想更新现代软件的公认答案......很多人仍然看到这个问题

标签: javascript jquery checkbox jquery-selectors


【解决方案1】:

使用.is(':checked') 来确定它是否被选中,然后相应地设置你的值。

More information here.

【讨论】:

  • 此外,当您在 if 子句中执行 $("#id").is("checked") 时,您将通过 return 获得真或假,而不是开/关,您可以将其发送到您的后端脚本并做任何您想做的事情。
  • 现在可能这无关紧要:ReSharper(我猜)输出警告“伪类 'checked' 与 Internet Explorer 8.0 不兼容”。跨度>
【解决方案2】:
$("#ans").attr('checked') 

会告诉您是否已检查。您还可以使用第二个参数 true/false 来选中/取消选中复选框。

$("#ans").attr('checked', true);

根据评论,如果可用,请使用 prop 而不是 attr。例如:

$("#ans").prop('checked')

【讨论】:

    【解决方案3】:

    只需使用$(selector).is(':checked')

    它返回一个布尔值。

    【讨论】:

      【解决方案4】:
      // use ternary operators
      $("#ans").is(':checked') ? 1 : 0;
      

      【讨论】:

      • @Loic 使用简洁的三元语法设置他的值,例如: : a = ischecked ? 1 : 0
      【解决方案5】:

      Stefan Brinkmann 的答案非常好,但对于初学者来说是不完整的(省略了变量赋值)。澄清一下:

      // this structure is called a ternary operator
      var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;
      

      它是这样工作的:

       var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;
      

      例子:

      var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
      alert( myMath );
      

      提示“否”

      如果这有帮助,请点赞 Stefan Brinkmann 的回答。

      【讨论】:

        【解决方案6】:

        你可以试试这个:

        $('#studentTypeCheck').is(":checked");
        

        【讨论】:

          【解决方案7】:

          我以前也发现过同样的问题, 希望这个解决方案可以帮助你。 首先,为您的复选框添加一个自定义属性:

          <input type="checkbox" id="ans" value="1" data-unchecked="0" />
          

          写一个jQuery扩展来获取值:

          $.fn.realVal = function(){
              var $obj = $(this);
              var val = $obj.val();
              var type = $obj.attr('type');
              if (type && type==='checkbox') {
                  var un_val = $obj.attr('data-unchecked');
                  if (typeof un_val==='undefined') un_val = '';
                  return $obj.prop('checked') ? val : un_val;
              } else {
                  return val;
              }
          };
          

          使用代码获取复选框值:

          $('#ans').realVal();
          

          你可以测试here

          【讨论】:

          • ...因为 jQuery 被称为“多写少做”的库
          • 长篇大论你已经走了很远 JQUERY 希望开发人员少写多做。简单的问题值得简单的解决
          • 是的,同意,少写,多做。你写一次扩展,剩下的时间你只调用API $(someradio).realVal(),你不需要写很多次扩展。
          • 您甚至不需要编写扩展程序一次,更不用说“多次”! O.o
          【解决方案8】:
          $('input:checkbox:checked').val();        // get the value from a checked checkbox
          

          【讨论】:

            【解决方案9】:
            <input type="checkbox" id="ans" value="1" />
            

            jQuery : var test= $("#ans").is(':checked') 它返回真或假。

            在你的函数中:

            $test =($request->get ( 'test' )== "true")? '1' : '0';
            

            【讨论】:

              【解决方案10】:

              你也可以使用:

              $("#ans:checked").length == 1;
              

              【讨论】:

                【解决方案11】:

                用途:

                $("#ans option:selected").val()
                

                【讨论】:

                • 如果没有被选中,那么第一部分不会返回任何东西,对吧?
                • @Senthil,OP 不是要求获取选定复选框的值,而是 return 1 如果它被选中
                【解决方案12】:
                function chkb(bool){
                if(bool)
                return 1;
                return 0;
                }
                
                var statusNum=chkb($("#ans").is(':checked'));
                

                如果复选框被选中,statusNum 将等于 1,否则为 0。

                编辑:您也可以将 DOM 添加到函数中。

                function chkb(el){
                if(el.is(':checked'))
                return 1;
                return 0;
                }
                
                var statusNum=chkb($("#ans"));
                

                【讨论】:

                  【解决方案13】:

                  我最近遇到了一个案例,当用户单击按钮时,我需要检查复选框的值。这样做的唯一正确方法是使用prop() 属性。

                  var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;
                  

                  这对我来说很有效,也许有人会需要它。

                  当我尝试.attr(':checked') 它返回checked 但我想要布尔值和.val() 返回属性值value

                  【讨论】:

                    【解决方案14】:

                    有几个选项,比如......

                     1. $("#ans").is(':checked') 
                     2. $("#ans:checked")
                     3. $('input:checkbox:checked'); 
                    

                    如果所有这些选项都返回 true,那么您可以根据需要设置值。

                    【讨论】:

                    • 第一个应该是(':checked'),否则不行。
                    【解决方案15】:

                    试试这个

                    $('input:checkbox:checked').click(function(){
                        var val=(this).val(); // it will get value from checked checkbox;
                    })
                    

                    此处标志为真,否则为假

                    var flag=$('#ans').attr('checked');
                    

                    再一次,这会让 cheked

                    $('#ans').attr('checked',true);
                    

                    【讨论】:

                      【解决方案16】:
                       $("#id").prop('checked') === true ? 1 : 0;
                      

                      【讨论】:

                        【解决方案17】:

                        你可以通过这两种方法获取值(真/假)

                        $("input[type='checkbox']").prop("checked");
                        $("input[type='checkbox']").is(":checked");
                        

                        【讨论】:

                          【解决方案18】:

                          先检查值是否被检查

                          $("#ans").find("checkbox").each(function(){
                              if ($(this).prop('checked')==true){ 
                              var id = $(this).val()
                              }
                          });
                          

                          否则设置 0

                          【讨论】:

                            【解决方案19】:

                            如果你想要整数值,请尝试:

                            $("#ans:checked").length
                            

                            【讨论】:

                              【解决方案20】:

                              你可以这样做:

                              $('input[id=ans]').is(':checked');     
                              

                              【讨论】:

                                猜你喜欢
                                • 2011-05-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2013-12-08
                                • 1970-01-01
                                • 2012-01-26
                                • 1970-01-01
                                • 2011-12-19
                                相关资源
                                最近更新 更多