yii2 Disabilita messaggio di errore di convalida su Focus / Key Up


Esempio

Per impostazione predefinita, il messaggio di errore viene visualizzato sotto la textbox di textbox in <div class="help-block"></div> su keyUp o dopo aver premuto il pulsante di invio se non vengono soddisfatti i vincoli di convalida.

A volte vogliamo un messaggio solo onKeyup ovvero nessuna convalida a evento onKeyup .

Controlliamo il file yii2/widgets/ActiveForm.php :

<?php

namespace yii\widgets;

use Yii;
use yii\base\InvalidCallException;
use yii\base\Widget;
use yii\base\Model;
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use yii\helpers\Html;
use yii\helpers\Json;

class ActiveForm extends Widget
{
  public $action = '';
  public $method = 'post';
  public $options = [];
  .
  .
  .
  public $validateOnSubmit = true;
  public $validateOnChange = true;
  public $validateOnBlur = true;
  public $validateOnType = false;
  
  .
  .
  .
  
}

Vediamo che $validateOnBlur è impostato su true per impostazione predefinita. Cambiare i file framework è una cosa molto brutta da fare, quindi è necessario sovrascriverli quando si utilizza il modulo:

<?php $form = ActiveForm::begin([ 'id' => 'register-form','validateOnBlur' => false]); ?>