0

これに対する答えをあちこち探しましたが、やりたいことの明確な例が見つかりません。私は過去にネイティブ JavaScript (getDocumentiD) でこの機能を提供するために取り組んできましたが、Yii フレームワークでこれを行う最も簡単な方法を知りたいです。

私がやりたいのは、CJuiAutoComplete クラスを使用して、フォームの以前に入力されたフィールドから与えられた値を追加、分割、またはマルチプレイすることによって、特定のフィールドを自動入力することです。値が変更されると、これを動的に更新したいと思います。誰かが適切な手順や例、またはガイドへのリンクを概説できれば、私はそれを大いに感謝します!

また、フォームの特定のフィールドで同様のことを達成したいと考えています。私がやりたいことは、前のフィールド (国名) などからの入力が与えられることです。そのモデルのデータベースを検索し、フォームから以前に入力された同じ国を含むすべての対応する行を検索し、整数の平均を取りますそれらすべての行の列、およびフォームの別のフィールドに自動入力します。

誰かがこれについて明確な例を挙げることができれば、私はそれを大いに感謝します.

4

1 に答える 1

1

そのクラスはhttp://jqueryui.com/demos/autocomplete/のラッパーであるため、 CJuiAutoCompleteはあなたが望んでいることを行うとは思いません。他のフォーム入力時。

あなたの質問については、一般的な概要は、次の行に沿って、ビューのリストボックスに AJAX 呼び出しをアタッチすることです。

echo CHtml::listBox('country', '', array('country1', 'country2'),
    array('ajax' => array(
                'type' => 'POST',
                'url' => Controller :: createUrl('/controller/parseData'),
                'dataType'=>'json',
                'success'=>'function(data) {
                    $("#secondField").val(data.returnValue);
                }'
                ),
        'id'=>'countrySelect',
    )
);

上記のコードは、AJAX が添付されたリストボックスを作成します。コントローラーには、次のようなものがあります。

public function actionParseData() {
   if (Yii::app()->request->isAjaxRequest) { 
       $country = $_POST['country'];
       // php code to parse the submitted data, 
       // i.e.. query the DB and run your calcuations
       // and finally return the data, using a line of the form:
       echo CJSON::encode(array('returnValue'=>$valueYouCalculated));
    }
}

その後、AJAX の成功関数が呼び出されると自動更新が行われ、id 'secondField' を持つページの部分が更新されて、返された値が保持されます。

于 2012-07-02T16:51:06.110 に答える