求教validate相关问题 [ 未指定版本 ]
使用yii确实可以很方便的生成针对model数据的验证,在rules里写好验证数组即可,但是我现在有个困惑,希望大牛赐教
我在view层启用了ajax验证,即'enableAjaxValidation'=>true,假设我有两个输入框,用户名和密码,当用户名输入框失去焦点时,我发现提交了一次ajax验证,将两个数据同时都POST到服务器进行了一次验证;当密码输入框失去焦点时,又提交了一次ajax验证,将两个数据又全部POST了一次。
我的问题是:
是否可以用户名输入框失去焦点是只POST用户名,密码输入框失去焦点时只POST密码,因为我觉得没必要两个数据都再提交验证,数据量小的时候还好,万一数据量大的时候就有点不爽了。
谢谢各位耐心看完,等候讲解~
共 4 个回答
-
你说的验证用户名密码 是想实现 登陆吗? 那么你想实现什么样的验证效果 是提交验证 还是说 光标离开焦点验证?
共 1 条回复guishentan 回复于 2013-11-01 16:09 回复我是指当焦点离开输入框时的验证,这个时候我不希望是全表单内容提交AJAX验证,我希望的是那个输入框失去焦点就提交哪个输入框里的内容给后台
-
你把你form表单控件的代码贴上来,我想看一看你是怎么写的,Yii 表单有三种验证,我没看到代码 但是我猜测你是 有 验证重复了. 调用表单控件的 $this->beginWidget('CActiveForm', array())部分,代码贴全.
共 1 条回复guishentan 回复于 2013-11-04 13:55 回复$form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form', 'enableAjaxValidation'=>true, 'enableClientValidation'=>true, 'clientOptions'=>array( 'validateOnSubmit'=>true, ),
));
-
还有就是 你在 对应提交的action中加入相应的ajax代码了吗?如下
if(isset($_POST['ajax']) && $_POST['ajax']==='user-form') { echo CActiveForm::validate($model); Yii::app()->end(); }
共 1 条回复guishentan 回复于 2013-11-04 13:56 回复你说的这段代码我已经加入了~
-
为什么我的代码不能在客户端验证呢
<?php
Class Member extends CActiveRecord{
public $mem_pass1;
public static function model($className=CLASS)
{
return parent::model($className);
}
public function tableName(){
return "{{member}}";
}
public function attributeLabels(){
return array(
'mem_name'=>'会员名称',
'mem_pass'=>'会员密码',
'mem_pass1'=>'确认密码',
'mem_email'=>'注册邮箱',
'nice_name'=>'会员昵称',
'mem_sex'=>'会员性别'
);
}
public function rules(){
return array(
array('mem_name','required','message'=>'会员名称必填'),
array('mem_name','unique','message'=>'会员名称已注册'),
array('mem_pass','required','message'=>'会员密码必填'),
array('mem_pass1','compare','compareAttribute'=>'mem_pass','message'=>'密码与确认密码不一致'),
array('mem_email','email','allowEmpty'=>false,'message'=>'邮箱格式不正确'),
array('mem_email','unique','message'=>'邮箱已被注册过'),
array('nice_name','safe'),
array('mem_sex','in','range'=>array(1,2,3),'allowEmpty'=>false,'message'=>'请选择性别'),
);
}
}
?>class MemberController extends Controller
{
public function actionAdd()
{
$member=new Member();
if(!empty($_POST['Member'])){
$member->attributes=$_POST['Member'];
if($member->save()){
echo 'success';
exit();
}
}
$this->renderPartial('add',array('member_model'=>$member,'title'=>'添加会员'));
}
}视图中
<?php
$form=$this->beginWidget('CActiveForm',array(
'enableClientValidation'=>true,
//'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit' =>true, //需要ajax验证为真,否则为假
),
));
?>
<?php echo $form->labelEx($member_model,'mem_name');?> <?php echo $form->textField($member_model,'mem_name');?>
<?php echo $form->error($member_model,'mem_name');?>
是不是yii版本的问题啊
guishentan
最后登录:2013-11-04
在线时长:1小时0分
- 粉丝0
- 金钱0
- 威望0
- 积分10