JQUERY 输入掩码可以为日期时间添加字符串吗?

Posted

技术标签:

【中文标题】JQUERY 输入掩码可以为日期时间添加字符串吗?【英文标题】:Is JQUERY inputmask can add string for datetime? 【发布时间】:2017-06-05 02:07:54 【问题描述】:

屏蔽时间的代码 (HH:mm:ss)

$('.time').each(function ()  
        $(this).inputmask(
                mask: "h:s:s",
                placeholder: "00:00:00",
                alias: "datetime",
                hourFormat: "24"
        ); 
);

如何屏蔽也接受 NONE 之类的字符串的日期时间?可以输入文本,但只有 None 值有效 NONE 或 01:00:00

我正在使用 jquery 输入掩码库 (https://github.com/RobinHerbots/jquery.inputmask)。

【问题讨论】:

【参考方案1】:

您不应该使用aliasmask,因为您没有声明alias,而只是用options 调用inputmask()

这是带有注释解释的解决方案。

$('.time').inputmask(
    mask:'(h:s:s)|(X)', // X will define our new validator , | mean OR 
    definitions: 
        "X": 
            // Needed since you need the word(NONE) comparaison
            validator: function(chrs) return chrs.toUpperCase().localeCompare('NONE')==0 ,
            cardinality: 4, // Mean 1 instance of our new validator(X) has a value of 4 chars
            prevalidator: [
                validator: function(chrs)return chrs.toUpperCase().localeCompare('N')==0 ,cardinality:1,
                validator: function(chrs)return chrs.toUpperCase().localeCompare('NO')==0 ,cardinality:2,
                validator: function(chrs)return chrs.toUpperCase().localeCompare('NON')==0 ,cardinality:3
            ],
            casing: "upper" // All chars will be casted as UPPER but not during our custom validation
        
    
)

里面有死亡金属:)

$('.time').inputmask(
    mask:'(h:s:s)|(X)', // X will define our new validator , | mean OR 
    regex: Inputmask().opts.aliases.datetime.regex, //Needed for the imported validator
    placeholder: "00:00:00", //To get 00:00:00 in place __:__:__
    hourFormat: "24", // or 12
    definitions: 
        "h": Inputmask().opts.aliases.datetime.definitions.h, // first char > 2 will become 09:
        "s": Inputmask().opts.aliases.datetime.definitions.s, //first char for minute/second if > 5 become 09
        "X": 
            // Needed since you need the word(NONE) comparaison
            validator: function(chrs) return chrs.toUpperCase().localeCompare('NONE')==0 ,
            cardinality: 4, // Mean 1 instance of our new validator(X) has a value of 4 chars
            prevalidator: [
                validator: function(chrs)return chrs.toUpperCase().localeCompare('N')==0 ,cardinality:1,
                validator: function(chrs)return chrs.toUpperCase().localeCompare('NO')==0 ,cardinality:2,
                validator: function(chrs)return chrs.toUpperCase().localeCompare('NON')==0 ,cardinality:3
            ],
            casing: "upper" // All chars will be casted as UPPER but not during our custom validation
        
    
)

【讨论】:

哇,它有效!你的男人先生greenseed!当您键入日期时间时,是否可能具有与日期时间相同的行为,它会在 24 小时内自动添加 00:00? 我不确定你到底在问什么,当用户输入 8 作为第一个键时,你用 00:00 代替 __:__ 或者你用 08:__。看这里 https://github.com/RobinHerbots/Inputmask/blob/3.x/js/inputmask.date.extensions.js#L224 maskset 是当前显示,所以只需在 prevalidator 中使用它 嗯?起初它是 00:00 而不是 : 并且当用户首先输入 8 时它变成 08:00 看看maskset here line 224 发生了什么,这是在用户输入2 作为年份输入的第一个字符时执行20 的代码,maskset 是用户在其中看到的输入 我明白了.. 但先生没有你的眼睛.. 意味着不知道如何将它添加到代码中。如果您可以更新答案,这将是一个非常大的帮助:)

以上是关于JQUERY 输入掩码可以为日期时间添加字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用输入掩码获取日期时间?

使用 jQuery 掩码时日期未正确显示

无法将掩码添加到输入

带有 r 闪亮 textInput 的 jQuery 掩码插件

需要根据 jquery 中的文化具有日期掩码

引导输入掩码无法工作,控制台中未显示错误