Php Yii客户端验证不需要';行不通

Php Yii客户端验证不需要';行不通,php,jquery,yii,Php,Jquery,Yii,“body”标签内有一个带有链接的页面。 插入链接后,将在fancybox中呈现以下视图 <div class="form"> <?php $model = new User; $model->scenario='registration'; $form=$this->beginWidget('CActiveForm', array( 'id'=>'signup-form'

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

该代码是从Ajax调用(renderPartial)调用的还是直接调用的?Ajax调用(renderPartial)不包含javascript验证函数,只有整个页面才包含。

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

更多关于

还有一件事需要注意:在进行后期处理时,需要确保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是在dev服务器上调试时发送的(YII_DEBUG设置为true),而jquery.min.js是在生产服务器上发送的(YII_DEBUG设置为false)。这让我很恼火:-)您可以在

中看到它的定义您是对的:未设置渲染部分后处理(默认值为false)