我有一个 javascript 函数,每次单击复选框时都会设置一个变量:
function handleClick(cb) {
alert('entered function');
setTimeout(function () {
if (cb.checked ) {
$("#IsChecked").val('true');
}
else
$("#IsChecked").val('false');
alert('now my value is: '+ $("#IsChecked").val());
}, 0);
}
这是我的复选框:
<input id="MyCheckBox" type="checkbox" value="true" onclick="handleClick(this);"
name="MyCheckBox" checked="checked">
每次选中该复选框时,这都非常有效。但现在我需要知道当用户单击按钮并且之前从未触摸过该复选框时是否选中了该复选框。所以我这样做:
$(document).ready(function () {
$("#IsChecked").val('default');
$('#btnCheck').click(function (e) {
var isComplete = $("#IsChecked").val();
if (isComplete == 'default') {
var cb = $('#MyCheckBox');
handleClick(cb);
alert('after handleClick ischecked is: ' + $("#IsChecked").val());
}
});
});
当我单击按钮并且默认情况下选中该复选框时,我会按以下顺序收到这些警报:
entered function
after handleClick ischecked is: default
now my value is: false
如果我选中复选框来切换它,我会按预期收到这些警报:
entered function
now my value is: false
在我的handleClick事件中,setTimeout因为IE而存在,所以我无法摆脱它。如何检查复选框是否已选中,而无需单击复选框本身?谢谢
最佳答案
How can i check to see if a checkbox is checked without having to click the checkbox itself?
$('#MyCheckBox').prop('checked')
会随时告诉您复选框是否被选中。
但是,如果您不仅想测试其状态,还想执行 handleClick
函数,请注意该函数需要 DOM 元素,而不是 jQuery 对象,如下所示论证。
如果将 jQuery 对象传递给函数,则 cb.checked
将始终计算为 false
,因为 jQuery 对象没有 checked
属性(只有 DOM 元素才有)。
您必须将函数调用更改为:
handleClick(cb.get(0));
从 jQuery 对象中提取 DOM 元素。
关于javascript - 查看默认情况下是否选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475211/