0

ajaxcall (renderPartial をトリガーする) を使用して (dropDownList の選択したオプションに応じて) フォームをロードしています
。 ajaxcall は次のようになります。

$("#dropDownList").change(function() {
        var selected = $(this).val();

        $.ajax({
            url: "index.php?r=item/update&category="+selected,
            cache: false,
            success: function(html){
                $("#inputs").html(html);
            }
        })
    });

アクション「更新」:

public function actionUpdate($category){
    $model = new Item;

    $this->renderPartial($category, array(
        'model'=>$model,
    ), false, true);
}

フォームは div "input" で問題なくレンダリングされますが、フォームで使用できる JavaScript はまだありません。私はすでに使用しています

Yii::app()->clientScript->scriptMap['jquery.js'] = false;

防ぐために、jquery が 2 回読み込まれます。しかし、私のフォーム (jquery.yiiactiveform.js) で使用できる js はまだありません。

編集:私は自分のfirebugをチェックしました。jquery.yiiactiveform.jsはajaxcallの後にロードされます(再び?)。- 私が使用している場合:

 Yii::app()->clientScript->scriptMap['jquery.yiiactiveform.js'] = false;

jquery.yiiactiveform.js はもう利用できないので、2 回ロードするべきではありませんか?

4

2 に答える 2

1

あなたの問題は、主にスクリプトがリロードされていることです。jQuery はすべてをめちゃくちゃにしますが、YiiActiveForm のような他のスクリプトもアプリケーションをめちゃくちゃにする可能性があります。ajax を呼び出すページに必要なすべてのスクリプトをプリロードし、ajax でロードするページのスクリプトを無効にすることができれば最高です。EUpdateDialog拡張機能 (免責事項: 私が書いたもの)を見てみると、追加のアイデアが得られるかもしれません。

于 2013-11-12T18:46:47.907 に答える
0

@Andrew が言及した拡張機能はNLSClientScriptです。

于 2013-11-12T21:35:44.833 に答える