【问题标题】:Get the value of checked checkbox?获取选中复选框的值?
【发布时间】:2012-07-20 22:18:24
【问题描述】:

所以我的代码看起来像这样:

<input class="messageCheckbox" type="checkbox" value="3" name="mailId[]">
<input class="messageCheckbox" type="checkbox" value="1" name="mailId[]">

我只需要 Javascript 来获取当前选中的任何复选框的值。

编辑:要添加,只有一个复选框。

【问题讨论】:

  • 你需要javascript代码还是jQuery?
  • 为什么不使用单选按钮?
  • 因为我正在为网站编写插件
  • 如果您只需要一个复选框,为什么不使用单选按钮?这是更适合这项工作的 UI 组件。
  • @TalYaron 你能取消选择单选按钮吗?我认为不是没有 js 代码。也许OP想轻松取消选中该框。

标签: javascript checkbox


【解决方案1】:

以上方法都不适合我,只需使用这个:

document.querySelector('.messageCheckbox').checked;

【讨论】:

  • 你从哪里得到的id?你能解释一下吗?问这个问题的人实际上在输入中使用了class。如果你能提供完整的代码会很好,这样我就可以理解你从哪里得到id
  • 这不能与 OP 提供的示例代码一起使用......我很好奇为什么它在没有回答问题的情况下得到了如此多的支持,尽管快速修复可能会使其正确。跨度>
  • 您能否编辑您提出的答案以扩展其作用以及它如何解决 OP?
  • 惊讶于这个答案如何获得很多选票!在一个页面中多次使用相同的 id 是不好的做法
  • @PradeepKumarPrabaharan 可能像我这样的人(不将 id 用于多个项目)想知道为什么 .value 未定义。
【解决方案2】:

对于现代浏览器

var checkedValue = document.querySelector('.messageCheckbox:checked').value;

通过使用jQuery

var checkedValue = $('.messageCheckbox:checked').val();

没有jQuery的纯javascript

var checkedValue = null; 
var inputElements = document.getElementsByClassName('messageCheckbox');
for(var i=0; inputElements[i]; ++i){
      if(inputElements[i].checked){
           checkedValue = inputElements[i].value;
           break;
      }
}

【讨论】:

  • @Mageek 在多个元素上添加相同的 id 是不好的做法。
  • @Engineer “节省字节”,因为我们必须简单地编写 document.getElementById("foo").value(); 和“节省计算”,因为 getElementById 肯定比 getElementsByTagName 和循环更快。
  • for jQuery .is(":checked") 是正确的方法,因为.val() 将返回属性值,如果它已定义......即使它没有定义它也会返回“on”而不是布尔值...... jsfiddle.net/d5f7wnzu
  • document.querySelector('.messageCheckbox:checked').value 如果没有选中复选框,则生成 TypeError
  • 这爆炸了 - 未捕获的类型错误:无法读取 null 的属性“值”
【解决方案3】:

我在我的代码中使用这个。试试这个

var x=$("#checkbox").is(":checked");

如果选中复选框,x 将为真,否则为假。

【讨论】:

  • 这不回答问题,但可用于确定是否选中了复选框。 +1,因为它仍然帮助了我。
  • 不回答这个问题,但正是我想要的。
  • #checkbox 是一个变量时很有用,例如myCheckbox.
  • 是的.is(":checked")帮我谢谢兄弟
【解决方案4】:

在纯javascript中:

function test() {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        alert(i + (cboxes[i].checked?' checked ':' unchecked ') + cboxes[i].value);
    }
}
function selectOnlyOne(current_clicked) {
    var cboxes = document.getElementsByName('mailId[]');
    var len = cboxes.length;
    for (var i=0; i<len; i++) {
        cboxes[i].checked = (cboxes[i] == current);
    }
}

【讨论】:

    【解决方案5】:

    这并不能直接回答问题,但可能会对未来的访问者有所帮助。


    如果您希望变量始终是复选框的当前状态(而不是必须不断检查其状态),您可以修改 onchange 事件来设置该变量。

    这可以在 HTML 中完成:

    <input class='messageCheckbox' type='checkbox' onchange='some_var=this.checked;'>
    

    或使用 JavaScript:

    cb = document.getElementsByClassName('messageCheckbox')[0]
    cb.addEventListener('change', function(){some_var = this.checked})
    

    【讨论】:

    • 作为未来的访客,我可以确认它会有所帮助。
    【解决方案6】:

    $(document).ready(function() {
      var ckbox = $("input[name='ips']");
      var chkId = '';
      $('input').on('click', function() {
        
        if (ckbox.is(':checked')) {
          $("input[name='ips']:checked").each ( function() {
       			chkId = $(this).val() + ",";
            chkId = chkId.slice(0, -1);
     	  });
           
           alert ( $(this).val() ); // return all values of checkboxes checked
           alert(chkId); // return value of checkbox checked
        }     
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <input type="checkbox" name="ips" value="12520">
    <input type="checkbox" name="ips" value="12521">
    <input type="checkbox" name="ips" value="12522">

    【讨论】:

      【解决方案7】:

      使用这个:

      alert($(".messageCheckbox").is(":checked").val())
      

      假设要检查的复选框具有“messageCheckbox”类,否则您必须检查输入是否为复选框类型等。

      【讨论】:

        【解决方案8】:
        <input class="messageCheckbox" type="checkbox" onchange="getValue(this.value)" value="3" name="mailId[]">
        
        <input class="messageCheckbox" type="checkbox" onchange="getValue(this.value)" value="1" name="mailId[]">
        
        function getValue(value){
            alert(value);
        }
        

        【讨论】:

          【解决方案9】:

          当未选中该框时,如果没有在控制台中抛出错误,上述任何方法都不适用于我,所以我按照这些思路做了一些事情(onclick 和复选框功能仅用于演示目的,在我的用例中它是更大的表单提交功能的一部分):

          function checkbox() {
            var checked = false;
            if (document.querySelector('#opt1:checked')) {
               checked = true;
            }
            document.getElementById('msg').innerText = checked;
          }
          &lt;input type="checkbox" onclick="checkbox()" id="opt1"&gt; &lt;span id="msg"&gt;Click The Box&lt;/span&gt;

          【讨论】:

            【解决方案10】:

            如果您使用的是Semantic UI Reactdata 将作为第二个参数传递给onChange 事件。

            因此,您可以按如下方式访问checked 属性:

            <Checkbox label="Conference" onChange={(e, d) => console.log(d.checked)} />
            

            【讨论】:

              【解决方案11】:

              如果您想使用 jQuery 获取所有复选框的值,这可能会对您有所帮助。这将解析列表,并根据所需的结果,您可以执行其他代码。顺便说一句,为此,不需要用括号 [] 命名输入。我把它们关掉了。

                $(document).on("change", ".messageCheckbox", function(evnt){
                  var data = $(".messageCheckbox");
                  data.each(function(){
                    console.log(this.defaultValue, this.checked);
                    // Do something... 
                  });
                }); /* END LISTENER messageCheckbox */
              

              【讨论】:

                【解决方案12】:

                纯 javascript 和现代浏览器

                // for boolean
                document.querySelector(`#isDebugMode`).checked
                
                // checked means specific values
                document.querySelector(`#size:checked`)?.value ?? defaultSize
                

                示例

                <form>
                  <input type="checkbox" id="isDebugMode"><br>
                  <input type="checkbox" value="3" id="size"><br>
                  <input type="submit">
                </form>
                
                <script>
                  document.querySelector(`form`).onsubmit = () => {
                    const isDebugMode = document.querySelector(`#isDebugMode`).checked
                    const defaultSize = "10"
                    const size = document.querySelector(`#size:checked`)?.value ?? defaultSize
                    // ? for defaultSize is undefined or null
                    // const size = document.querySelector(`#size:checked`)?.value
                    console.log({isDebugMode, size})
                    return false
                  }
                </script>

                【讨论】:

                  【解决方案13】:

                  在我的项目中,我通常使用这个sn-ps:

                  var type[];
                  $("input[name='messageCheckbox']:checked").each(function (i) {
                                  type[i] = $(this).val();
                              });
                  

                  而且效果很好。

                  【讨论】:

                  • 一种效率极低的方法。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-04-19
                  • 2014-03-30
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-01-16
                  • 1970-01-01
                  相关资源
                  最近更新 更多