チェックボックスがクリックされるたびに変数を設定する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イベントでは、IEが原因でsetTimeoutが存在するため、それを取り除くことはできません。チェックボックス自体をクリックせずに、チェックボックスがオンになっているかどうかを確認するにはどうすればよいですか? ありがとう