0

質問: を使用して、CActiveForm dropDownList変更時に選択した値を投稿しようとしています。しかし、現在選択されているドロップダウン値を参照するにはどうすればよいかわかりません。

これまでのコードは次のとおりです。

$form->dropDownList($model,'condition',$model->getConditionOptions(), array('submit'=>array('theme/build','id'=>$model->id,'condition'=>'')));

ドロップgetConditionOptionsダウン値の配列を返します。「条件」は、このドロップダウンから選択された値である必要があります。

4

2 に答える 2

1

現在の値を取得するためだけに属性を指定しないでください。これにより、ドロップダウンの目的が無効になります。

ドロップダウンの現在の値を取得するには、jqueryで、jQ​​ueryのvalを使用します:http://api.jquery.com/val/、例:

$("#DropDownID").val()

編集:あなたの本当の質問は、ドロップダウンの値に応じて、ドロップダウンを変更した後にコンテンツを更新する方法のようです。これはAJAXを介して実現されます。Yiiは、このための特別なAJAX配列を提供します。

$form->dropDownList($model,
                    'condition',
                    $model->getConditionOptions(),
                    array('submit'=>array('theme/build',
                          'id'=>$model->id,
                          'ajax'=>array('url'=>CController::createURL('controller/action'),
                                        'data'=>'$("#' . $model->id . '")',                                   
                                        'update'=>'#otherID', //selector to update
                                        )
                                    )
                          )
                    );

次に、コントローラー側で、getParamを使用して値を取得できます。レンダリングを使用するのではなく、更新するものはすべてエコーバックする必要があることに注意してください。

編集2: jQueryを使用せず、ページ全体をリロードするだけの場合は、フォームを送信する必要があります。例:

$form->dropDownList($model, 'condition', $model->getConditionOptions(), array('submit'=>CController::createURL('controller/action')))

次に、コントローラーでgetParamを使用して、新しいページをレンダリングします。

于 2013-01-14T18:43:53.680 に答える
0

これを行う方法は次のようになると思います。

//define your dropdownlist
$form->dropDownList(
    $model,
    'condition',
    $model->getConditionOptions(),
    //your ajax call
    'ajax'  => array( 
        'type'  => 'POST',
        'url'   => 'theme/build'.
        'data'  => array(
            'id' => $model->id,
            'condition' =>'js:jQuery(this).val()', //current value
        )
);

編集:現在選択されているオプションを取得するには:

$('#dropbox').val();

また

$('#dropbox :selected').val();

現在選択されているオプション テキストを取得するには

$('#dropbox :selected').text();
于 2013-01-14T18:40:54.380 に答える