“body”标签内有一个链接页面 插入链接后,将在fancybox中呈现以下视图。
<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验证函数。
可能是什么问题?
(siteController代码是故意插入的)
答案 0 :(得分:1)
您的问题很可能是您将HTML发送到Fancybox的方式。如果你做一个renderPartial(由user1248203提到),你需要确保你有一个renderPartial后处理发回的视图(后处理包括你想要与视图本身一起呈现的javascript / css文件)。
的更多信息另外需要注意的一点是:当您进行后期处理时,您需要确保Fancybox的Javascript(以及可能的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(YII_DEBUG设置为true),但在生产服务器上发送jquery.min.js(其中YII_DEBUG设置为false)。这让我感到困惑:-)你可以在framework/web/js/packages.php
中看到它的定义答案 1 :(得分:0)
是从Ajax调用(renderPartial)调用代码还是直接调用代码? Ajax调用(renderPartial)不包含javascript验证函数,只有整个页面都有。