Yii2 ActiveForm TextField Number Max
Yii2 ActiveForm TextField Number Max
我有如下字段
<?= $form->field($model, 'phone')
->textInput(['type' => 'number', 'maxlength' => 13])
->label('Phone')
?>
为什么 'maxlength'
不起作用?以及如何让它发挥作用?
先谢谢你
它不会工作,因为您正在使用 type=>number
作为您的输入字段,您必须将其更改为 type=>text
。
<?= $form->field($model, 'phone')
->textInput(['type' => 'text', 'maxlength' => 13])
->label('Phone')
?>
从您的输入来看,您似乎正在这样做,因为您不希望用户在 Phone
字段中输入除数字以外的任何其他内容,Yii2
为您提供了一种非常好的方式完成这个即 yii\widgets\MaskedInput
, you can format your input using the mask
option to tell it how many digits to allow and in which sequence see the demos HERE
<?= $form->field($model, 'phone')->widget(\yii\widgets\MaskedInput::className(), [
'mask' => '999-999-9999',
]) ?>
除了上述解决方案之外,您还可以选择使用自定义验证选项在模型中对此进行验证。
模型中 phone 的规则应类似于
[['phone'],'PhoneLimit']
public function PhoneLimit($attribute)
{
if (!preg_match('/^[0-9]{13}$/', $this->$attribute)) {
$this->addError($attribute, 'Please provide digits only no more than 13.');
}
}
尝试类型编号 -> 'type'=>'number', 'min' => 1, 'max' => 999
我有如下字段
<?= $form->field($model, 'phone')
->textInput(['type' => 'number', 'maxlength' => 13])
->label('Phone')
?>
为什么 'maxlength'
不起作用?以及如何让它发挥作用?
先谢谢你
它不会工作,因为您正在使用 type=>number
作为您的输入字段,您必须将其更改为 type=>text
。
<?= $form->field($model, 'phone')
->textInput(['type' => 'text', 'maxlength' => 13])
->label('Phone')
?>
从您的输入来看,您似乎正在这样做,因为您不希望用户在 Phone
字段中输入除数字以外的任何其他内容,Yii2
为您提供了一种非常好的方式完成这个即 yii\widgets\MaskedInput
, you can format your input using the mask
option to tell it how many digits to allow and in which sequence see the demos HERE
<?= $form->field($model, 'phone')->widget(\yii\widgets\MaskedInput::className(), [
'mask' => '999-999-9999',
]) ?>
除了上述解决方案之外,您还可以选择使用自定义验证选项在模型中对此进行验证。
模型中 phone 的规则应类似于
[['phone'],'PhoneLimit']
public function PhoneLimit($attribute)
{
if (!preg_match('/^[0-9]{13}$/', $this->$attribute)) {
$this->addError($attribute, 'Please provide digits only no more than 13.');
}
}
尝试类型编号 -> 'type'=>'number', 'min' => 1, 'max' => 999