【问题标题】:Return value of "checked" from change event从 change 事件返回“checked”的值
【发布时间】:2016-02-09 22:51:32
【问题描述】:

我声明了一个变量,并希望将复选框的状态传递给dhcp_addr 变量,并在选中复选框时将其设置为 1,在未选中时将其设置为 0。在将值返回给变量时需要一些帮助。

var dhcp_addr = $('#dhcp').change(function () {
  if(dhcp.checked) {
    console.log("checked");
  } else {
    console.log("unchecked");
  }
});

【问题讨论】:

  • 所以只需在函数内更改dhcp_addr?喜欢,dhcp_addr = dhcp.checked; 或者如果你需要 1/0,dhcp_addr = dhcp.checked ? 1 : 0;

标签: javascript jquery html checkbox


【解决方案1】:

您不能从函数中“返回”它,因为随时可能发生更改。相反,您可以在发生更改时重新分配值。

var dhcp_addr;
$('#dhcp').change(function() {
  if (this.checked) {
    dhcp_addr = 1;
  } else {
    dhcp_addr = 0;
  }
});

虽然,如果您将10 用于truefalse 值,我建议更直接地使用这些值。

dhcp_addr = this.checked;

【讨论】:

    【解决方案2】:

    这是我想出的最简单的:

    var dhcp_addr;
    
    $("#dhcp").change(function () {
      dhcp_addr = this.checked ? 1 : 0;
    });
    

    【讨论】:

      【解决方案3】:

      您可以使用此代码简化它

      var dhcp_addr;
      $('#dhcp').change(function() {
       dhcp_addr = +this.checked;
      });
      

      所以,this.checked 是布尔值,+true 转换为数字 (1),+false 转换为 0。

      【讨论】:

        【解决方案4】:

        试试下面的 sn-p 代码:

        var dhcp_addr = $('#dhcp').change(function(){
          alert ( $('#dhcp').is(':checked') ? 1 : 0 );
        });
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <input type="checkbox" name="dhcp" id="dhcp" value="on" />Check <br />

        【讨论】:

        • 你为什么使用$('#dhcp').is(':checked')?它的效率不如this.checked
        • 完全同意你的看法。应该是var dhcp_addr = $('#dhcp').change(function(){ alert ( $(this).is(':checked') ? 1 : 0 ); });
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 2013-11-09
        • 2013-10-23
        • 1970-01-01
        相关资源
        最近更新 更多