2016-04-13 43 views
1

我有这样一个复选框...如何根据选中或未选中的复选框来更改变量?

<input type="checkbox" id="something" name="something" value="25" data-val="25" checked="checked" class="option"> 
    <label for="something">Something</label> 

我想有,每一个时间复选框被选中或取消选中的JavaScript/jQuery代码,它看起来看看它的检查,并分配是否值25它被选中,如果没有选中,则为0。但是,当我通过检查/取消选中进行测试时,它只是继续吐出25.为什么当我取消选中时它不会变为0?任何想法我做错了什么?

$(document).ready(function() { 
    $('.option').on('change', function() { 
     if ($('#something').attr('checked')) { 
      var something = 25; 
     } else { 
      var something = 0; 
     } 
     console.log(something); 
    }); 
}); 
+1

可能的复制[检查复选框选中属性(http://stackoverflow.com/questions/901712/check-checkbox-checked-property) – Robusto

回答

1

.attr()方法返回string“选中” - 的复选框,这不改变的初始状态。
它将始终评估为true,并且if condition将始终运行。

要检索和更改DOM属性(如选中的,选中的,表单元素的 或禁用状态),请使用.prop()方法。

因此,使用.prop()你可以得到true/false

$('.option').on('change', function() { 
    var something; 
    if ($(this).prop('checked')) { 
     something=25; 
     } 
    else { 
     something = 0; 
     } 
     console.log(something); 
}); 

或者你可以检查如果checkbox.is()方法,它返回boolean检查。的

$('.option').on('change', function() { 
     var something; 
     if ($(this).is(':checked')) { 
      something=25; 
     } else { 
      something = 0; 
     } 
     console.log(something); 
}); 
+1

真棒,即做到了。每天学些新东西。非常感谢! – user3304303

相关问题