0

すべてのチェックボックスの選択に関するSOに関する他の多くの質問を読みましたが、他のチェックボックスアクションをトリガーする方法を示す質問が見つかりませんでした。

メインのチェックボックスがあります。このチェックボックスを選択すると、他のすべてのチェックボックスも選択されます。問題は、他のチェックボックスがチェックされている/チェックされていない場合、テキストフィールドなどを無効にするなど、独自のアクションを実行する必要があることです。これは、各チェックボックスに onclick を追加することで実現しました。では、メインのチェックボックスが選択されている場合、各チェックボックスの onclick を呼び出す方法 (または各チェックボックスを作成してアクションを実行する方法) は?

これについて読んだ後、私は次のことを行いました。

      // main checkbox functin that checks/unchecks other checkboxes. 

  function toggleAllCheckBoxes(source , operationType) {
                checkboxes = document.getElementsByName("checkBox" + operationType);
                for each(var checkbox in checkboxes)
                checkbox.checked = source.checked;
               // checkbox.addEventListener('click', true); // this is wrong.
            }


  //this will toggle text fields enabled/disabled
 function toggleDisable(oldTable, newTable , checkBox)
    {
        if( document.getElementById(newTable) !=null)// in case to toggle only old table
        {
            document.getElementById(newTable).disabled = checkBox.checked;
        }

        document.getElementById(oldTable).disabled = checkBox.checked;
    }

メインのチェックボックス:

All<input type="checkbox" onClick="toggleAllCheckBoxes(this , '<?=$operationType?>')"/> 

その他のチェックボックス

  X<input name="checkbox" id="checkbox" onclick="toggleDisable('<?= $originalTableId?>' , '<?= $backupTableId?>' , this )" type="checkbox" /> 

これまでのところ、メインのチェックボックスが選択されている場合にテキストフィールドが有効/無効にならないことを除いて、これはうまく機能します。単一のチェックボックスでそれを行うことができますが。

ありがとう。

4

1 に答える 1

1

2 つの問題があります。

  1. for eachJavaScript には演算子はありません。ここでは、通常の for ループを使用する必要があります。
  2. checked見てきたように、すべてのイベント ハンドラーをバイパスするため、チェックボックスの属性を設定したくありません。代わりに、チェックボックスを呼び出すclick()と、チェックがオン (またはオフ) になり、すべてのイベント ハンドラーが呼び出されます。

では、次のようになりtoggleAllCheckBoxesます。

for(var i = 0; i < checkboxes.length; i++)
    checkboxes[i].click();

このコードを試すための Fiddle は次のとおりです: http://jsfiddle.net/z4Ltc/

于 2012-11-20T13:49:18.910 に答える