使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据。
但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做验证和限制。
要启用CActiveForm的客户端验证,可以使用enableClientValidation参数:
beginWidget('CActiveForm', array( 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, //提交时的验证 'validateOnChange'=>true, //输入框值改变时的验证 'validateOnType'=>false, //键入时验证 'afterValidate' => 'js:function(form, data, hasError){return exClientValidate();}' ), 'htmlOptions'=>array('enctype'=>'multipart/form-data'), )); ?>
另外在服务端数据验证时也可以自定义复杂的验证规则:
public function rules() { ...... array('description','exServerValidate','on'=>'create,update'), }在exServerValidate方法中添加。