2013-06-11 3 views
0

У меня есть форму в 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.

[EDIT] Похоже, что ошибки проверки для полей «выбрать» - это те, которые не обновляются и не обновляются.

[EDIT] Все ошибки проверки, которые печатаются/эхо после отправки формы, не исчезают, даже если это значение предоставляется или изменяется для соответствия правилам проверки.

ответ

1

Место это чуть выше // trigger ajax validation комментарий:

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

Это необходимо сбросить ошибки, прежде чем они вновь подтверждены.

+0

Не будет ли удалено также поля, которые также должны иметь проверку подлинности? – Pelang

+0

вы правы, это должно быть вместо 'removeClass' (: –

+0

Я думаю, что мы должны иметь hide(), так как removeClass не будет скрывать текст ошибки и добавлять удаляемый класс только для полей. Спасибо за ответ. что поля, значения которых не соответствуют валидации, также будут устранены ошибки проверки. – Pelang

0

С вашей формой код виджета, я не думаю, что проверка ajax не будет работать.

Чтобы включить Ajax проверки на форме вы должны настроить свой виджет, как показано ниже,

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

С помощью этой конфигурации, ваша форма будет подтверждена, когда полевая форма потерял фокус (размытие).

Попробуйте, это даст вам решение проблемы.

+0

Я пробовал validateOnSubmit, это не имеет никакого эффекта. благодаря – Pelang

1

В моем случае я добавил код ниже на странице, чтобы удалить красную подсветку в поле ввода формы.

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

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

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

Я также добавить функцию updateInput на рамочном/веб/JS/источник/jquery.yiiactiveform.js поэтому он будет устранить ошибку проверки для определенной области.

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

Я не уверен, что это правильное решение, но оно работает для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^