0

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

4

3 に答える 3

2

チェックボックス自体をクリックせずに、チェックボックスがオンになっているかどうかを確認するにはどうすればよいですか?

$('#MyCheckBox').prop('checked')チェックボックスがチェックされているかどうかはいつでもわかります。

ただし、そのステータスをテストするだけでなく、関数を実行する場合は、関数が引数として jQuery オブジェクトではなくDOM 要素handleClickを想定していることに注意してください。 関数に jQuery オブジェクトを渡すと、は常に と評価されます。jQuery オブジェクトにはプロパティがないためです(DOM 要素のみが持っています)。
cb.checkedfalsechecked

関数呼び出しを次のように変更する必要があります。

handleClick(cb.get(0));

jQuery オブジェクトから DOM 要素を抽出します。

于 2012-07-13T17:21:05.917 に答える
1

ボタンクリックイベントからチェックボックスがチェックされていることを確認したい場合。

$("#IsChecked").is(':checked'); //returns boolean
于 2012-07-13T17:17:51.503 に答える
1
 How can i check to see if a checkbox is checked without having to click 

val()メソッドを使用して、クリックイベントでJavaScriptでチェックボックスがチェックされているかどうかを確認できます

$("#MyCheckBox").is(':checked')​​​​​​
于 2012-07-13T17:18:30.837 に答える