我有一个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 而存在的,所以我无法摆脱它。我如何检查是否选中了复选框而无需单击复选框本身?谢谢