【问题标题】:yii1 CActiveForm numberfield does not accept decimal valuesyii1 CActiveForm 数字字段不接受十进制值
【发布时间】:2018-02-15 00:01:22
【问题描述】:

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

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

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

有没有人遇到过这种情况或者有谁知道如何纠正它?

以下是类似于我的代码:

表格

<?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() ?>

型号

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

【问题讨论】:

    标签: php forms yii yii1.x


    【解决方案1】:

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

    表格

    <div class="left field-container one-fourth">
         <?= $form->label($person, 'height') ?>
         <?= $form->textField($person, 'height') ?>
    </div>
    

    由于您的数字输入类型,您在不同的浏览器上会遇到不同的验证错误。所有浏览器都有自己的验证。你可以通过inspect元素检查numberField是数字输入类型。

    如果你有 Yii 1.1.7 或更高版本,那么你可以使用enableClientValidation 来设置真或假,这将禁用你的浏览器验证。

    检查你的 Yii 版本echo Yii::getVersion();

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 2019-01-23
      • 2018-11-30
      • 2011-09-12
      • 2017-11-02
      • 2018-01-11
      • 2021-08-11
      相关资源
      最近更新 更多