0

チェックボックスでいっぱいのフォームがあり、AJAX を介してフォーム オプションを更新しようとしています (1 つのオプションが選択されているため、他の選択は制限されています)。送信ボタンを介してこれを機能させましたが、選択ボックスの変更時に実行したいと思います。(はい、フォームを送信するのは珍しい使い方だと思います)。

入力の属性配列に onchange を追加しようとしましたが、うまくいきません。ラベル、クラスなどの他のものはすべて正常に適用されますが、onchange は適用されません。チェックボックス リストの 1 つを次に示します。

echo $this->Form->input('Sale.LocationID', array(
        'label' => 'LocationID:',
        'options'=>$locations,
        'multiple' => 'checkbox',
        'onchange'=>"this.form.submit()",
        ));

CakePHP の標準的な方法でチェックボックスに onchange イベントを追加する方法はありますか、それとも Formhelper を使わずにチェックボックスを作成する必要がありますか?

4

1 に答える 1

1

インライン イベント処理の使用はあまり効率的ではありません。jQuery とイベント委任の使用を検討しましたか?

ビューファイルの最後に;

// Using 'heredoc' here so we don't have to escape quotes
$script = <<< JS

    // this will handle click events on any checkbox on the page
    $(document).on("click", "input[type='checkbox']", function(){
        // or AJAX post here
        this.form.submit();
    });
JS;  // note: must be at the start of the line, no space before JS

// Append the script to the buffer
$this->Js->buffer($script);

そして、レイアウトの内側の直前 (例: default.ctp)

// output the JavaScript buffer
echo $this->Js->writeBuffer();
于 2013-03-28T23:16:50.097 に答える