You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,提问作者Павел Осипов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:43:29