0

一括ステータス アップロード用のドロップダウン リストがあります

echo CHtml::dropDownList('updateStatus',
                'updateStatus',
                Lookup::items('NodeStatus'),
                array(
                      'prompt' => '',
                      'ajax'=>array(
                                    'type'=>'POST',
                                    'url' => CController::createUrl('node/bulkStatus'),
                                    'data'=> array('updateStatus' => 'js:this.value', 'autoId' => 'js:$("input[name=autoId]:checked").map(function () {return this.value;}).get().join(",")'), 
                                    'success'=>'reloadGrid',
                                    'update'=>'#msg', //selector to update
                                    ),
                                )                          
                );
?>

上記のajaxオプションで入力チェックボックスのすべてのチェックされた値の値を取得するのに苦労しています。これは次のようなものです:

<input id="autoId_6" type="checkbox" name="autoId[]" value="11">
<input id="autoId_5" type="checkbox" name="autoId[]" value="10">
<input id="autoId_8" type="checkbox" name="autoId[]" value="6">

私は firebug の投稿を調べましたが、autoId は空で、updateStatus は正常に動作しています。autoId 値を配列としてアクションに送信し、配列をループできるようにします。

public function actionBulkStatus()
{ 
    if(isset($_POST['updateStatus']))
    {
        $autoIdAll = $_POST['autoId'];
        if(count($autoIdAll)>0)
        {
            foreach($autoIdAll as $autoId)
            {
                $model=$this->loadModel($autoId);
                $model->Status = $_POST['updateStatus'];
                $model->save();
            }
        }
        echo "successfully update";
    }
}

dropDownListのajaxデータオプションでautoIdチェック値を配列として渡すにはどうすればよいですか?

4

1 に答える 1

0

複雑にしないでおく。から削除.join(",").get().join(..)、チェックボックスの名前はautoId、削除するだけで[]問題ありません。

于 2013-04-25T12:39:04.473 に答える