簡體   English   中英

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

“主題”和“消息”是“通知”模型的兩個字段。 在通知模型中,我定義了以下規則:

array('subject, message', 'required')

我的問題是驗證“主題”有效,但驗證“消息”無效! 提交表單后,出現“主題”錯誤消息,但“消息”沒有任何錯誤。 誰能幫我解決這個問題? 我使用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格式來進行驗證,獲取/發布數據以及執行其他操作(作為client / js函數)。

在您的消息字段中刪除"id" => "message" ,然后再次測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM