【问题标题】:Change/Get check state of CheckBox更改/获取 CheckBox 的检查状态
【发布时间】:2020-02-01 16:36:58
【问题描述】:

我只想使用 JavaScript 获取/更改 CheckBox 的值。并不是说我不能为此使用 jQuery。我已经尝试过类似的方法,但它不起作用。

JavaScript 函数

    function checkAddress()
    {
        if (checkAddress.checked == true)
        {
            alert("a");
        }
    }

HTML

<input type="checkbox" name="checkAddress" onchange="checkAddress()" />

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    改用onclick 会起作用。从理论上讲,它可能无法捕捉通过键盘所做的更改,但所有浏览器在通过键盘检查时似乎都会触发该事件。

    您还需要将复选框传递给函数:

    function checkAddress(checkbox)
    {
        if (checkbox.checked)
        {
            alert("a");
        }
    }
    

    HTML

    <input type="checkbox" name="checkAddress" onclick="checkAddress(this)" />
    

    【讨论】:

    • 我不认为他的问题是事件的类型:正如你提到的那样,onchange 无论如何比 onclick 更具包容性。问题是没有名为checkAddress 的对象具有checked 属性。最有可能的是,checkAddress 将被解析为函数本身,因为它也被命名为那个。只是在 HTML 中给某个东西一个 name 属性并不会在 Javascript 中创建一个名为那个的变量。传入“this”或以下答案中的任何选项都可以解决问题。
    • @bmearns:我想我没能在我不雅的匆忙中发现可能未声明的变量(与函数名冲突),所以我承认你可能是对的。很惊讶这被接受了。
    • 对于那些使用像 React 这样在回调中将应用程序上下文绑定到“this”的框架的人,你应该使用checkbox.target.checked 而不是checkbox.checked
    • 这是我一直在寻找的,但我确实觉得奇怪的是“onclick”可以处理键盘事件。
    【解决方案2】:

    您需要在使用前检索复选框。

    给复选框一个id 属性以使用document.getElementById(..) 检索它,然后检查它的当前状态。

    例如:

    function checkAddress()
    {
        var chkBox = document.getElementById('checkAddress');
        if (chkBox.checked)
        {
            // ..
        }
    }
    

    然后您的 HTML 将如下所示:

    <input type="checkbox" id="checkAddress" name="checkAddress" onclick="checkAddress()"/>
    

    (还将onchange 更改为onclickDoesn't work quite well in IE :)。

    【讨论】:

      【解决方案3】:

      我知道这是一个很晚的回复,但这段代码更灵活一些,应该可以帮助像我这样的迟到者。

      function copycheck(from,to) {
      //retrives variables "from" (original checkbox/element) and "to" (target checkbox) you declare when you call the function on the HTML.
      
          if(document.getElementById(from).checked==true) 
          //checks status of "from" element. change to whatever validation you prefer.
              {
                  document.getElementById(to).checked=true;
                   //if validation returns true, checks target checkbox
              }
          else
              {   
                  document.getElementById(to).checked=false; 
                   //if validation returns true, unchecks target checkbox
              }
      }
      

      HTML 类似于

      <input type="radio" name="bob" onclick="copycheck('from','to');" />
      

      其中“from”和“to”是您希望复制“to”的元素“from”的各自ID。 照原样,它可以在复选框之间工作,但您可以输入您想要的任何 ID 和您想要的任何条件,只要在从 html 事件调用发送变量时正确定义“to”(要操作的复选框)。

      注意,正如 SpYk3HH 所说,默认情况下,您要使用的目标是一个数组。使用 Web 开发人员工具栏中的“显示元素信息”工具将帮助您找到各个复选框的完整 ID。

      希望这会有所帮助。

      【讨论】:

      • 你可以把它减少到document.getElementById(to).checked = document.getElementById(from).checked;
      【解决方案4】:

      你需要这个:

      window.onload = function(){
          var elCheckBox=document.getElementById("cbxTodos");
          elCheckBox.onchange =function (){
              alert("como ves");
          }
      };
      

      【讨论】:

        【解决方案5】:

        需要:

        if (document.forms[0].elements["checkAddress"].checked == true)
        

        假设您有一个表单,否则使用表单名称。

        附带说明,不要以相同的名称调用元素和函数,这会导致奇怪的冲突。

        【讨论】:

          【解决方案6】:

          我知道这是迟到的信息,但在 jQuery 中,使用 .checked 是可能且简单的! 如果你的元素是这样的:

          <td>
              <input type="radio" name="bob" />
          </td>
          

          您可以像这样轻松获取/设置检查状态:

          $("td").each(function()
          {
              $(this).click(function()
              {
                  var thisInput  = $(this).find("input[type=radio]");
                  var checked = thisInput.is(":checked");
                  thisInput[0].checked = (checked) ?  false : true;
              }
          });
          

          秘诀是使用“[0]”数组索引标识符,它是您的 jquery 对象的元素! 尽情享受吧!

          【讨论】:

          • 原发帖人写道他不能使用JQuery,这个问题与JQuery无关。
          【解决方案7】:
          <input type="checkbox" name="checkAddress" onclick="if(this.checked){ alert('a'); }" />
          

          【讨论】:

            【解决方案8】:

            这是我如何使用这种东西的一个例子:

            HTML:

            <input type="checkbox" id="ThisIsTheId" value="X" onchange="ThisIsTheFunction(this.id,this.checked)">
            

            JAVASCRIPT:

            function ThisIsTheFunction(temp,temp2) {
              if(temp2 == true) {
                document.getElementById(temp).style.visibility = "visible";
              } else {
                document.getElementById(temp).style.visibility = "hidden";
              }
            }
            

            【讨论】:

              【解决方案9】:

              var val = $("#checkboxId").is(":checked");

              【讨论】:

              • 原发帖人写道他不能使用JQuery,这个问题与JQuery无关。
              【解决方案10】:

              这是一个带有示例的快速实现:

              检查所有项目的复选框:

              <input id="btnSelectAll" type="checkbox">
              

              单项(表格行):

              <input class="single-item" name="item[]" type="checkbox">
              

              jQuery 的 Js 代码:

              $(document).on('click', '#btnSelectAll', function(state) {
                  if ($('#btnSelectAll').is(':checked')) {
                      $('.single-item').prop('checked', true);
                      $('.batch-erase').addClass('d-block');
                  } else {
                      $('.single-item').prop('checked', false);
                      $('.batch-erase').removeClass('d-block');
                  }
              });
              

              批量删除项目:

              <div class="batch-erase d-none">
                  <a href="/path/to/delete" class="btn btn-danger btn-sm">
                      <i class="fe-trash"></i> Delete All
                  </a>
              </div>
              

              【讨论】:

              • 原发帖人写道他不能使用JQuery,这个问题与JQuery无关。
              【解决方案11】:

              这很有用

              $("input[type=checkbox]").change((e)=>{ 
                console.log(e.target.checked);
              });
              

              【讨论】:

              • 原发帖人写道他不能使用JQuery,这个问题与JQuery无关。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-20
              • 2015-04-09
              • 2010-11-23
              • 1970-01-01
              相关资源
              最近更新 更多