yii CActiveForm 客户端验证在某些字段上不起作用
yii CActiveForm client validation not working on some field
在我的 yii 应用程序中,我有一个简单的表单,其中包含两个字段,如下所示:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'message-form',
'enableClientValidation' => true,
//'enableAjaxValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
'validateOnType' => false,
'errorCssClass' => 'has-error',
'successCssClass' => 'has-success',
)));
?>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'subject'); ?>
<?php echo $form->textField($model, 'subject', array('class' => 'form-control')); ?>
<?php echo $form->error($model, 'subject', array('class' => 'alert alert-danger')); ?>
</div>
<div class="col-md-5"></div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'message'); ?>
<?php echo $form->textField($model, 'message', array('class' => 'form-control', 'id'=>'message')); ?>
<?php echo $form->error($model, 'message', array('class' => 'alert alert-danger')); ?>
</div>
</div>
</div>
......
//remaining of code
"subject"和"message"是"Notification"模型的两个字段。在通知模型中,我定义了这条规则:
array('subject, message', 'required')
我的问题是 "subject" 的验证有效,但 "message" 的验证无效!
提交表单后,出现 "subject" 的错误消息,但 "message" 没有任何错误。谁能帮我解决这个问题?
我使用 Yii 1.1.15
在http://www.yiiframework.com/doc/api/1.1/CActiveForm你可以看到例子
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'firstName'); ?>
<?php echo $form->textField($model,'firstName'); ?>
<?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'lastName'); ?>
<?php echo $form->textField($model,'lastName'); ?>
<?php echo $form->error($model,'lastName'); ?>
</div>
<?php $this->endWidget(); ?>
我想你设置了 enableAjaxValidation = true
您的消息字段中 HTML 属性 "id" => "message"
是否有原因? Yii CActiveForm 为每个字段生成一个特定的 HTML id : modelName_fieldName
。
您不需要手动设置 ID(例如您的主题字段;它没有 ID)。 Yii 需要那些格式的 id 用于验证、get/post 数据和更多东西(如 client/js 函数)。
删除消息字段中的 "id" => "message"
并再次测试。
在我的 yii 应用程序中,我有一个简单的表单,其中包含两个字段,如下所示:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'message-form',
'enableClientValidation' => true,
//'enableAjaxValidation' => true,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
'validateOnType' => false,
'errorCssClass' => 'has-error',
'successCssClass' => 'has-success',
)));
?>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'subject'); ?>
<?php echo $form->textField($model, 'subject', array('class' => 'form-control')); ?>
<?php echo $form->error($model, 'subject', array('class' => 'alert alert-danger')); ?>
</div>
<div class="col-md-5"></div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-md-6">
<?php echo $form->labelEx($model, 'message'); ?>
<?php echo $form->textField($model, 'message', array('class' => 'form-control', 'id'=>'message')); ?>
<?php echo $form->error($model, 'message', array('class' => 'alert alert-danger')); ?>
</div>
</div>
</div>
......
//remaining of code
"subject"和"message"是"Notification"模型的两个字段。在通知模型中,我定义了这条规则:
array('subject, message', 'required')
我的问题是 "subject" 的验证有效,但 "message" 的验证无效! 提交表单后,出现 "subject" 的错误消息,但 "message" 没有任何错误。谁能帮我解决这个问题? 我使用 Yii 1.1.15
在http://www.yiiframework.com/doc/api/1.1/CActiveForm你可以看到例子
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'focus'=>array($model,'firstName'),
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'firstName'); ?>
<?php echo $form->textField($model,'firstName'); ?>
<?php echo $form->error($model,'firstName'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'lastName'); ?>
<?php echo $form->textField($model,'lastName'); ?>
<?php echo $form->error($model,'lastName'); ?>
</div>
<?php $this->endWidget(); ?>
我想你设置了 enableAjaxValidation = true
您的消息字段中 HTML 属性 "id" => "message"
是否有原因? Yii CActiveForm 为每个字段生成一个特定的 HTML id : modelName_fieldName
。
您不需要手动设置 ID(例如您的主题字段;它没有 ID)。 Yii 需要那些格式的 id 用于验证、get/post 数据和更多东西(如 client/js 函数)。
删除消息字段中的 "id" => "message"
并再次测试。