yii1 CActiveForm数字字段不接受小数值

时间:2018-02-15 00:01:22

标签: php forms yii yii1.x

我需要创建一个允许将十进制值输入到numberField的CActiveForm。

模型规则包括将该属性的integerOnly值设置为false,但似乎问题在于表单,而不是模型的验证规则。当我尝试提交带有小数值的表单时,它会告诉我输入一个有效值。

该消息取决于我使用的浏览器。 Safari说,"输入有效值。" Chrome说,"请输入有效值。两个最接近的有效值是x和y。"其中x和y是我输入的两个最接近的整数。

有没有人经历过这个或有没有人知道如何纠正它?

以下是类似于我的代码:

FORM

<?php $form = $this->beginWidget('CActiveForm', array(
        'action' => Yii::app()->createUrl('person/create', array(
                'school' => $school->id
        )),
        'method' => 'get',
        'htmlOptions' => array(
                'class' => 'generic-form'
        )
)); ?>
        <div class="row">
                <div class="left field-container one-fourth">
                        <?= $form->label($person, 'name') ?>
                        <?= $form->textField($person, 'name') ?>
                </div>
                <div class="left field-container one-fourth">
                        <?= $form->label($person, 'height') ?>
                        <?= $form->numberField($person, 'height') ?>
                </div>
                <div class="left field-container one-fourth">
                        <?= $form->label($person, 'age') ?>
                        <?= $form->numberField($person, 'age') ?>
                </div>
                <div class="left one-fourth">
                        <?= TbHtml::submitButton('', array(
                                'id' => 'submit-create-person',
                                'class' => 'fa fa-plus generic-button'
                        )); ?>
                </div>
        </div>
<?php $this->endWidget() ?>

MODEL

public function rules()
{
        return array(
                array('school_id', 'required'),
                array('name', 'safe'),
                array('height', 'numerical', 'integerOnly' => false),
                array('age', 'numerical', 'integerOnly'=>true),
        );
}

1 个答案:

答案 0 :(得分:1)

您可以在表单中使用textField而不是numberField进行验证。

<强>表格

buttons

由于您的号码输入类型,您在不同的浏览器上会遇到不同的验证错误。所有浏览器都有自己的验证。您可以通过检查元素<div class="left field-container one-fourth"> <?= $form->label($person, 'height') ?> <?= $form->textField($person, 'height') ?> </div> 进行检查是数字输入类型。

如果您有Yii 1.1.7或更高版本,那么您可以使用enableClientValidation来表示true或false,这将禁用您的浏览器验证。

检查您的Yii版本numberField