2012-04-11 3 views
0

В теге «тело» есть страница со ссылкой.
Когда ссылка вставлена, в fancybox отображается следующий вид.Проверка на стороне клиента Yii не работает

<div class="form"> 
    <?php 
       $model = new User; 
     $model->scenario='registration'; 
     $form=$this->beginWidget('CActiveForm', array(
     'id'=>'signup-form', 
       'action'=>'/signup/', 
     'enableClientValidation'=>true, 
     'clientOptions'=>array(
      'validateOnSubmit'=>true, 
     ), 
    )); ?> 

     <p class="note">Fields with <span class="required">*</span> are required.</p> 

     <div class="row"> 
      <?php echo $form->labelEx($model,'username'); ?> 
      <?php echo $form->textField($model,'username'); ?> 
      <?php echo $form->error($model,'username'); ?> 
     </div> 

     <div class="row"> 
      <?php echo $form->labelEx($model,'password'); ?> 
      <?php echo $form->passwordField($model,'password'); ?> 
      <?php echo $form->error($model,'password'); ?> 
     </div> 


     <div class="row buttons"> 
      <?php echo CHtml::submitButton('sign up',array('name'=>'submit')); ?> 
     </div> 

    <?php $this->endWidget(); ?> 
    </div><!-- form --> 

Когда приведенный выше код вставляется без FancyBox скрипт проверки клиента вставлен правильно, но когда в FancyBox нет никаких функций проверки JQuery не вставлен на страницу.
В чем может быть проблема?
(код сайтаКонтроллер вставлен сюда специально)

ответ

1

Ваша проблема, скорее всего, в том, как вы отправляете HTML в Fancybox. Если вы выполняете renderPartial (как указано в user1248203), вам нужно убедиться, что у вас есть обработчик postPcess, который отправляется обратно (постобработка включает файлы javascript/css, которые вы хотите отобразить вместе с самим представлением).

Более подробную информацию о CController page

Еще одна вещь, чтобы отметить: когда вы делаете пост-обработки, вам нужно будет убедиться, что Javascript для FancyBox (и, возможно, JQuery, и т.д.) не отправлено назад. Это может вызвать некоторые действительно запутывающие проблемы. Чтобы сохранить файлы от повторного пересылаются по Ajax, используйте:

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

Также отметим, что jquery.js отправляется при отладке на сервере DEV (с YII_DEBUG установлен верно), но JQuery. min.js отправляется на производственных серверах (где YII_DEBUG установлено в false). Это укусило меня :-) Вы можете видеть это в framework/web/js/packages.php

+0

Вы правы: renderPartial postprocess не был установлен (и значение по умолчанию равно false) – lvil

+0

Рад, что помогло – acorncom

0

Является ли код вызванным от вызова Ajax (renderPartial) или он называется прямым? Ajax calls (renderPartial) do не включают функцию проверки javascript, только вся страница делает.

Смежные вопросы