更新或选择值时清除验证错误消息

时间:2013-06-11 02:51:04

标签: validation jquery yii yii-components

我在yii中有一个表单来验证表单字段。当我提交表单时,它会显示错误。 但是,当更新具有验证错误的字段的值时,错误仍然存​​在。 我希望消息清楚。我该如何清除验证错误?

表单小部件代码

下方
<?php $form = $this->beginWidget('CActiveForm', array(
    'id'=>'user-form',
    'enableAjaxValidation'=>true
)); ?>

在我的表单中,我回复验证错误,如下面的代码:

 <?php echo $form->error($model, 'firstname'); ?> 

我尝试了解决这个问题的方法 Trigger Yii field validation onchange of another field

$('#user-form').change(function(){

    var settings = $(this).data('settings');
    $.each(settings.attributes, function () {
        this.status = 2; // force ajax validation
    });
    $(this).data('settings', settings);

    // trigger ajax validation
    $.fn.yiiactiveform.validate($(this), function (data) {
        $.each(settings.attributes, function () {
            $.fn.yiiactiveform.updateInput(this, data, $(this));
        });

    });
});

但仍未清除错误消息。我已经确认发送了ajax请求,并且在firebug控制台上显示了响应。

[编辑] 似乎“select”字段的那些验证错误是那些仅未更新/清除的字段。

[编辑] 表单被提交后打印/回显的所有验证错误都不会消失,即使提供了值或更改以满足验证规则。

3 个答案:

答案 0 :(得分:1)

将其放在// trigger ajax validation评论的上方:

$('.errorSummary, .errorMessage').hide();

这应该在重新验证之前重置错误。

答案 1 :(得分:1)

在我的情况下,我在页面上添加了以下代码,以删除表单上输入字段的红色突出显示。

$('#user-form select, #user-form input').change(function(){

    field = $(this).attr('id');

    if($('#'+field+'_em').text() == ''){
        $(this).removeClass('error');
    }
});

我还在framework / web / js / source / jquery.yiiactiveform.js上添加了updateInput函数,因此它将删除某些字段的验证错误。

if(hasError == false){
    $error.toggle(hasError);
    $el2 = form.find('#' + attribute.id);
    $el2.removeClass(attribute.errorCssClass);
}

我不确定这是否是正确的解决方案,但它对我有用。

答案 2 :(得分:0)

使用表单窗口小部件代码,我认为ajax验证不起作用。

要在表单上启用Ajax验证,您应该按如下方式配置窗口小部件,

<?php
$form = $this->beginWidget('CActiveForm', array(
    'id'=>'user-form',
    'enableAjaxValidation' => true,
    'clientOptions' => array(
        'validateOnSubmit' => true,
    ),
        ));
?>

使用此配置,当表单字段丢失焦点(模糊)时,将验证表单。

尝试一下,它将为您的问题提供解决方案。