如何在Yii2的Editable组件中设置输入掩码?
解决Kartik Editable电话输入掩码问题
方法一:通过inputOptions配置InputMask属性
确保项目已引入jQuery InputMask插件(Yii2项目可通过yii\web\JqueryAsset及自定义资产包注册),修改Editable组件配置,在inputOptions中添加完整的InputMask属性:
[ 'attribute' => 'another_number', 'format' => 'raw', 'value' => \kartik\editable\Editable::widget([ 'model' => $model, 'attribute' => 'another_number', 'asPopover' => false, 'inputType' => Editable::INPUT_TEXT, 'contentOptions' => ['class' => 'editable'], // 新增输入框掩码配置 'inputOptions' => [ 'class' => 'form-control', 'data-inputmask' => "'mask': '+7 (999) 999-99-99'", 'data-inputmask-regex' => true ], 'inlineSettings' => [ 'closeButton' => '<button type="button" class="btn btn-sm btn-danger kv-editable-close" title="Закрыть"> <i class="fas fa-xmark"></i> </button>', ], ]) ],
方法二:通过pluginEvents手动初始化InputMask
若方法一无效,可绑定Editable初始化事件,手动为输入框应用掩码:
[ 'attribute' => 'another_number', 'format' => 'raw', 'value' => \kartik\editable\Editable::widget([ 'model' => $model, 'attribute' => 'another_number', 'asPopover' => false, 'inputType' => Editable::INPUT_TEXT, 'contentOptions' => ['class' => 'editable'], 'inlineSettings' => [ 'closeButton' => '<button type="button" class="btn btn-sm btn-danger kv-editable-close" title="Закрыть"> <i class="fas fa-xmark"></i> </button>', ], // 绑定初始化事件,手动设置掩码 'pluginEvents' => [ "editable.init" => "function(event, widget) { widget.$input.inputmask('+7 (999) 999-99-99'); }", ], ]) ],
注意事项
若项目未引入jQuery InputMask,Yii2项目可在视图头部添加以下代码注册资源:
use yii\web\JqueryAsset; use yii\web\AssetBundle; class InputMaskAsset extends AssetBundle { public $sourcePath = '@bower/jquery.inputmask/dist'; public $js = ['jquery.inputmask.min.js']; public $depends = [JqueryAsset::class]; } InputMaskAsset::register($this);
内容的提问来源于stack exchange,提问作者Павел Осипов
相关产品推荐
相关产品推荐

