YiiのCActiveFormでjavascriptによるバリデーションを行う

YiiのCActiveFormで、クライアントサイドでjavascriptによるバリデーションを行う場合、

<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
  'id'=>'event-form',
  'enableClientValidation'=>true,
  'clientOptions'=>array('validateOnSubmit'=>true),
  'focus'=>array($model,'title'),
)); ?>

のようにすると簡単に実現することができます。

'enableClientValidation'=>true,

が入力欄ごとにバリデーション、

'clientOptions'=>array('validateOnSubmit'=>true),

がサブミットボタンを押した際、フォーム全体に行うバリデーションを有効にする設定です。なお、

'focus'=>array($model,'title'),

は、フォームが表示された際、フォーカスする入力欄を指定しています。

また、

<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
  'id'=>'event-form',
  'enableClientValidation'=>true,
  'clientOptions'=>array('validateOnSubmit'=>true,
    'beforeValidate'=>'js:function(){alert("beforeValidate");};return true;}',
    'afterValidate'=>'js:function(form, data, hasError){if(hasError){alert("afterValidate");};return true;}'),
  'focus'=>array($model,'title'),
)); ?>

のような感じにすると、バリデーションの前後に実行したい処理を組み込むことができます。beforeValidate、afterValidateとも関数の最後にtrueを返すようにする必要があります。詳細については、こちらを参考にしてください。

投稿日:
カテゴリー: php タグ: