0

“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代码)

4

2 回答 2

1

您的问题很可能是您如何将 HTML 发送到 Fancybox。如果您执行 renderPartial(如 user1248203 所暗示),您需要确保您已对发回的视图进行了 renderPartial 后处理(后处理包括您希望与视图本身一起呈现的 javascript/css 文件)。

有关CController 页面的更多信息

另一件需要注意的事情:当您进行后处理时,您需要确保您的 Fancybox(可能还有 jQuery 等)的 Javascript 不会再次发回。它可能会导致一些非常令人困惑的问题。要防止文件通过 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中看到它的定义

于 2012-04-11T23:29:57.503 回答
0

代码是从 Ajax 调用 (renderPartial) 调用还是直接调用?Ajax 调用 (renderPartial)包含 javascript 验证功能,只有整个页面包含。

于 2012-04-11T15:11:32.333 回答