【发布时间】:2012-04-30 14:58:44
【问题描述】:
我使用 Yii 客户端验证来验证一些输入,当用户输入出现错误时,Yii 客户端验证不会阻止提交,也不会阻止 ajax 请求。 我使用网格小部件“carvw-grid”,当用户单击提交按钮时,它会发出 ajax 请求以更新“carvw-grid”内容和结果。当出现客户端验证错误时,我想阻止提交和 ajax 请求。
这是我的脚本代码:
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.myloading').show();
$('.myshow').hide();
$('.myresult').slideUp().delay(3000).queue(function() {
$(this).show();
$('.myloading').hide();
$('.myloading').addClass('myshow');
});
});
$('.search-form form').submit(function(){
$.fn.yiiGridView.update('carvw-grid', {
data: $(this).serialize()
});
return false;
});
");
这是我的表格
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'carvw-form',
'action'=>Yii::app()->createUrl($this->route),
'method'=>'get',
'enableAjaxValidation'=>false,
'enableClientValidation'=>true,
'focus'=>array($model,'OWNER_ID'),
'clientOptions' => array('validateOnSubmit'=>true, 'validateOnType'=>true),
)); ?>
这是我的提交按钮
<div class="row buttons">
<?php echo CHtml::submitButton('search',array('class'=>'search-button')); ?>
</div>
这是我的网格
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'carvw-grid',
'dataProvider'=>$model->search(),
'columns'=>array('CAR_COMPANY_NAME','MODEL_YEAR',
'CAR_COLOR_NAME',
'USING_TYPE_NAME',array(
'class'=>'CButtonColumn',
),
),
));
?>
如何防止客户端验证错误的提交和 ajax 请求?
【问题讨论】:
-
我从来没有接触过 Yii,但我会不会对
'enableAjaxValidation'=>false,这条线提出质疑? -
我没有使用ajax验证,我只使用客户端验证,ajax请求用于获取搜索结果。
-
你打电话给
$form->error($model, 'field')吗? yiiframework.com/doc/api/1.1/CActiveForm#c5223 -
是的,我称之为,验证没有问题!,客户端验证错误并不能阻止提交和ajax请求的问题