2

AJAX 経由でコンテンツを更新すると、renderPartial.CJuiDatePicker が正しく読み込まれません。フィールドカレンダーをクリックしても表示されません。

この問題を解決するのを手伝ってください。

コントローラーコード:

public function actionEditTestAjax()
{   
        $Okstatus  = 0;
        $id  = (int)$_POST['ID'];
        $newPerson = $this->loadModel($id);
        $newPerson = $this->loadModel( $id )->person;

    if(isset($_POST['Person']))
            {
                $newPerson->attributes=$_POST['Person'];
                if($newPerson->save())
                    $Okstatus = 1;
            }

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

         echo CJSON::encode( array(
                'status' => 'OK',
                'div' => $this->renderPartial( 'editAjax', array(
                                'person' => $newPerson), 
                                true, true ),
            ));

        exit;
   }

コードを表示:

<div class="form">

    <?php

    $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
        'id'=>'person-form-edit_person-form',
        'type'=>'horizontal',
         'enableAjaxValidation'=>false,
          'htmlOptions'=>array(
                               'onsubmit'=>"return false;",/* Disable normal form submit */
                               'onkeypress'=>" if(event.keyCode == 13){ send(); } " /* Do ajax call when user presses enter key */
                             ),

    )); ?>

    <fieldset style="position: relative;">
        <legend> <?php echo Yii::t('Employee', 'Personal information'); ?> </legend>


    <div class="control-group">
            <?php echo $form->labelEx($person,'birthDate',array('class'=>'control-label')); ?>
            <div class="controls">
            <?php
            $this->widget('zii.widgets.jui.CJuiDatePicker', array(
                'model'=>$person,
                'attribute'=>'birthDate',
                'value'=>Yii::app()->dateFormatter->format(Yii::app()->locale->dateFormat, $person->birthDate),
                'language' => Yii::app()->language,
                // additional javascript options for the date picker plugin
                'options'=>array(
                    //'showAnim' => 'fold',
                    'showAnim'=>'fold',
                    'changeMonth' => 'true',
                    'changeYear' => 'true',
                    'showOtherMonths' => 'true',
                    'selectOtherMonths' => 'true',
                    'showOn' => 'both',
                    'buttonImage' => '/images/calendar-view-month.png',
                    'buttonImageOnly' => 'true',
                    'yearRange' => 'c-100:c'
                ),
                'htmlOptions' => array( 
                    'size' => 10,
                    'maxlength' => 10,
                ),
            ));
            ?>
            </div>
            <?php echo $form->error($person,'birthDate'); ?>
        </div>

    </fieldset>

    <div class="form-actions">

            <?php echo CHtml::Button('SUBMIT',array('onclick'=>'send();')); ?> 

        </div>

    <?php $this->endWidget(); ?>

</div>

*

しかし、CJuiDatePicker カレンダーが表示されない

.*

ここに画像の説明を入力

4

3 に答える 3

1

これは、Yii の renderPartial でよくある問題です。簡単な解決策は、renderPartial の 4 番目のパラメーターを true に設定して、Yii が日付ピッカーを表示するために必要なスクリプトを含めるようにすることです。

ただし、4 番目のパラメーターを true に設定すると、無限再帰ループや他のスクリプトの一部が機能しないなどの新しい問題が発生する場合があります。

ここで非常に良い解決策を見つけましたyii フレームワークの cjuidatepicker ウィジェット

2番目の答えを見てください。わたしにはできる。

于 2013-12-05T05:04:07.843 に答える
0

@ippiには理由があります。これをビュー「editAjax」(部分的にレンダリング)の最後に配置する必要があるかもしれません。

    <?php Yii::app()->getClientScript()->scriptMap=array('jquery.js'=>false, 'jquery.ui.js'=>false); ?>

そして、「jquery.ui.js」がリロードされているかどうかを制御します。

于 2013-08-01T07:17:45.223 に答える
0
$this->renderPartial( 'editAjax', array(
                            'person' => $newPerson), 
                            false, true ),

トリックです:-)

于 2015-02-15T13:53:15.537 に答える