从程序化检查/取消选中中取出已更改的复选框

时间:2016-07-21 16:30:59

标签: javascript jquery html coffeescript

假设:

HTML

Choose Application Reason
    Select From List    xpath=//select[@id="reason"]    New

的CoffeeScript

<input id='a' value='bbb' type='checkbox'>
<button id='btn'>
click to change checkbox
</button>

我第一次按下按钮时,预计会看到3个控制台输出日志消息。但我没有看到。

当我的复选框$('#a').change -> console.log 'asdfasdf' $('#btn').click -> document.getElementById('a').checked=true document.getElementById('a').checked=false document.getElementById('a').checked=true 状态发生变化时,如何修改on change功能以记录消息?

3 个答案:

答案 0 :(得分:1)

因为以编程方式更改值或属性不会触发用户事件,并且如果您需要触发事件,则需要自己执行此操作

$('#btn').click ->
    var $a = $('#a')
    for(var i=0; i<3; i++){
         setTimeout(function(){
            $a.prop('checked', !$a[0].checked).change();
         },i*500)
   }

答案 1 :(得分:0)

我希望这是你的问题

按钮点击功能

$('#btn').click(function(){
 var isChecked  = $('#a').is(":checked");
 if (isChecked) {
                console.log("CheckBox checked.");
            } else {
                console.log("CheckBox not checked.");
            }

});

复选框更改功能

$('#a').change(function(){
 var isChecked  = $(this).is(":checked");
 if (isChecked) {
                console.log("CheckBox checked.");
            } else {
                console.log("CheckBox not checked.");
            }

});

答案 2 :(得分:0)

你可以用两种方式之一做。

您可以触发复选框,而不是将其明确设置为true或false,如果您只想切换它。

$('#btn').click ->
    $('#a').click()

或者您可以在设置checked属性后触发更改。

$('#btn').click ->
    $('#a').prop('checked', true).change()

在javascript中设置选中的值并不会自动触发更改处理程序(使用.val()设置输入值的方法相同,不会触发更改处理程序)