0

次のように生成されるアイテムのリストがあります。

<input type="checkbox" name="sacb" onchange="selAll();" title="select all"/>
  <?php
  while($row = mysql_fetch_array($res)){
    echo "<div><input type='checkbox' name='cb' value='$row[id]'>$row[item]</div>";
  }
?>

脚本

function selAll(){
  var s = document.form.sacb;
  var t = document.form.cb;
  for(var i=0; i<t.length; i++){
    t[i].checked = s.checked;
  }
}

これは、すべてのチェックボックスを選択/選択解除するのにうまく機能しています。

選択した複数/すべてのアイテムを削除するフォームを送信したいです。しかし、選択したすべてのチェックボックスを取得していません。検索したところ、PHP コードを次のように置き換える必要があることがわかりました。

<input type='checkbox' name='cb[]' value='$row[id]'>$row[item]

しかし、これを行うとすぐに、スクリプトはすべてのチェックボックスを選択できません。この問題を解決するには?解決策はありますか?

4

2 に答える 2

1

以下のJavaScriptから、選択したチェックボックスを更新できます

コードを追加して、選択した配列の数を選択して単純な JavaScript を取得してください。この例では、jquery を使用してチェックボックスの配列を取得し、それが選択されているかどうかを確認しています。

var field, fields = $('.edit_user_notifi :checkbox'), i = fields.length;
        var notification_status = '';
        while (i--) {
            field = fields[i];
            if(notification_status == '')
            {
                if (field.checked) {
                    notification_status = field.id+'~1';

                } else {
                    notification_status = field.id+'~0';
                }
            }else{

                if (field.checked) {
                    notification_status = notification_status +','+ field.id+'~1';
                }else{
                    notification_status = notification_status +','+ field.id+'~0';
                }

            }
        }

簡単なjavascriptで取得するロジックを少し変更するか、jqueryを使用している場合に適しています。

于 2013-07-20T05:35:59.120 に答える
1

ドット表記を使用して、名前に括弧が含まれる要素にアクセスすることはできないため、要素コレクションを使用して取得する必要があります

function selAll(){
    var s = document.form.sacb;
    var checkboxes = document.form.elements['cb[]'];
    for (var i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = s.checked;
    }
}
于 2013-07-20T05:30:17.643 に答える