假设:
Choose Application Reason
Select From List xpath=//select[@id="reason"] New
<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
功能以记录消息?
答案 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()设置输入值的方法相同,不会触发更改处理程序)