Php Yii框架中的验证

Php Yii框架中的验证,php,validation,yii,notifications,Php,Validation,Yii,Notifications,在验证过程中,如何在yii框架中动态设置字段集的边界 失败时,字段集的边框应变为红色,而成功时,字段集的边框应变为绿色 如果任何一个输入失败,如果所有元素都正确,则feildset应显示failure(失败)和success(成功) <fieldset class="field"> <div class="visible column"> <div> <?php echo $form->labelEx( $modelAddress, 'First

在验证过程中,如何在yii框架中动态设置字段集的边界

失败时,字段集的边框应变为红色,而成功时,字段集的边框应变为绿色

如果任何一个输入失败,如果所有元素都正确,则feildset应显示failure(失败)和success(成功)

<fieldset class="field">
<div class="visible column">
<div>
<?php echo $form->labelEx( $modelAddress, 'First Name'); ?>
 <?php echo $form->textField( $modelAddress, 'firstName'); ?> 
<div class="indicator">&nbsp;</div>
<?php echo $form->error( $modelAddress, 'firstName'); ?>
 </div>
</div>
</fieldset>

//My Script
<script>
$(document).ready(function()
{ $("input").each(function(){if ($(this).hasClass("error"))
 { $(this).parent().parent().parent().parent().addClass("fieldseterror");
}
}); 

</script>

//PHP
<?php
$form = $this->beginWidget( 'CActiveForm', array(
'id' => 'registration',
'enableAjaxValidation' => true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'afterValidate' => 'js:checkErrors'
    ),'htmlOptions' => array( 'class' => 'vertical inner custom_frm_styl')));
?>

//我的剧本
$(文档).ready(函数()
{$(“输入”).each(函数(){if($(this).hasClass(“错误”))
{$(this.parent().parent().parent().parent().addClass(“fieldseterror”);
}
}); 
//PHP
您可以使用jQuery。 Yii自动更改非验证字段以获得class.error,因此您可以检查任何表单字段是否具有class.error以更改您想要的内容,例如(未测试):


$(函数(){
$('#用户表单')。提交(函数(){
$(“#用户表单输入”)。每个(函数(){
if($(this).hasClass(“错误”)){
...
}
});
});
});
您可以使用jQuery。 Yii自动更改非验证字段以获得class.error,因此您可以检查任何表单字段是否具有class.error以更改您想要的内容,例如(未测试):


$(函数(){
$('#用户表单')。提交(函数(){
$(“#用户表单输入”)。每个(函数(){
if($(this).hasClass(“错误”)){
...
}
});
});
});
我认为您可以使用CActiveForm的属性

$myform = $this->beginWidget('CActiveForm',array('id'=>'invoice-form',
    'enableClientValidation'=>true,
'clientOptions'=>array(
        'validateOnSubmit'=>true,
        'afterValidate' => 'js:checkErrors'
    )
));

<script type="text/javascript"> 
    function checkErrors(form, data, hasError) {
        if(!hasError) {
            $('.field').addClass("fieldseterror");
            //$(form).submit();
            return true;
        }
        else {
            //return false;
                }

    }
</script>
$myform=$this->beginWidget('CActiveForm',数组('id'=>'invoice-form',
“enableClientValidation”=>true,
'clientOptions'=>数组(
“validateOnSubmit”=>true,
'afterValidate'=>'js:checkErrors'
)
));
函数检查错误(表单、数据、HASRERROR){
如果(!hasError){
$('.field').addClass(“fieldseterror”);
//$(表单).submit();
返回true;
}
否则{
//返回false;
}
}
我认为您可以使用CActiveForm的属性

$myform = $this->beginWidget('CActiveForm',array('id'=>'invoice-form',
    'enableClientValidation'=>true,
'clientOptions'=>array(
        'validateOnSubmit'=>true,
        'afterValidate' => 'js:checkErrors'
    )
));

<script type="text/javascript"> 
    function checkErrors(form, data, hasError) {
        if(!hasError) {
            $('.field').addClass("fieldseterror");
            //$(form).submit();
            return true;
        }
        else {
            //return false;
                }

    }
</script>
$myform=$this->beginWidget('CActiveForm',数组('id'=>'invoice-form',
“enableClientValidation”=>true,
'clientOptions'=>数组(
“validateOnSubmit”=>true,
'afterValidate'=>'js:checkErrors'
)
));
函数检查错误(表单、数据、HASRERROR){
如果(!hasError){
$('.field').addClass(“fieldseterror”);
//$(表单).submit();
返回true;
}
否则{
//返回false;
}
}

您只是没有访问正确的
父元素。请尝试:

$(this).parent().parent().parent().addClass("fieldseterror");
在yii中包含jquery代码的最好方法是使用,因此在create.php中添加:

如您所见,我添加了一个
console.log()
调用来检查匹配的父元素。另外,在添加字段集之前,最好先检查字段集是否已经有
fieldseterror


为此,您不需要
validateOnSubmit
afterValidate

您只是没有访问正确的
父元素。请尝试:

$(this).parent().parent().parent().addClass("fieldseterror");
在yii中包含jquery代码的最好方法是使用,因此在create.php中添加:

如您所见,我添加了一个
console.log()
调用来检查匹配的父元素。另外,在添加字段集之前,最好先检查字段集是否已经有
fieldseterror


您不需要
验证提交
验证后

如果指示器被激活,请将背景更改为红色。我们必须使用find()进行动态设置和家长:但我无法修复..是否尝试使用客户端表单验证?如果指示器被激活,请将背景更改为红色我们必须使用find()和家长动态设置:但我无法修复..是否尝试使用客户端表单验证?