输入掩码中的可选字符

时间:2012-03-03 01:31:35

标签: javascript jquery input mask

如何在输入掩码中指定可选字符?

我发现了这个蒙版输入插件http://digitalbush.com/projects/masked-input-plugin/和这些掩码定义。

$.mask.definitions['g']="[ ]";
$.mask.definitions['h']="[aApP]";
$.mask.definitions['i']="[mM]";
$.mask.definitions['2']="[0-1]";
$.mask.definitions['6']="[0-5]";
new_mask = "29:69";
$("#txtTime").mask(new_mask);

这定义了12小时时间格式的输入掩码,例如11:00。我想让用户只为“小时”指定一个数字。用户应该能够键入1:00,而不必键入01:00。我该怎么做?

4 个答案:

答案 0 :(得分:4)

您需要使用?作为可选字符,因此在您的情况下,您应该使用“2?9:69”。

答案 1 :(得分:3)

您在问题中链接到的the page引用和示例:

  

您可以选择部分面具。在'?'之后列出的任何东西   掩码内被认为是可选的用户输入。常见的例子   这是电话号码+可选扩展名。

jQuery(function($){
   $("#phone").mask("(999) 999-9999? x99999");
});

答案 2 :(得分:0)

您可以使用$.mask.definitions['g']="[0-9 ]";

答案 3 :(得分:0)

我有一个类似的问题,我试图解决可变货币金额($ 0.00 - $ 10000.00),我真的不明白插件是如何工作的。

一方面,$.mask.definitions['symbol'] = '???'位看起来像是使用了一个正则表达式片段,基于API参考中的示例,并且在mask函数中的源中的这一部分得到了一些确认。代码:

$.each(mask.split(""), function (i, c) {
    if (c == '?') {
        len--;
        partialPosition = i;
    } else if (defs[c]) {
        tests.push(new RegExp(defs[c]));
        if (firstNonMaskPos == null)
            firstNonMaskPos = tests.length - 1;
    } else {
        tests.push(null);
    }
});

...另一方面,[]|[0-9]的掩码定义不起作用(我试图做空字符串或0-9,对于那些在正则表达式中不识字的人。)作为参考,我试图构建一个掩码,以满足oooo9.99之类的0.00-10000.00条件,其中o[]|[0-9]

由于代码确认这是基于正则表达式,因此null或范围模式应该有效但不是;这是掩码框架中一个比较模糊的错误。除非是试图做错事的人,这也是可能的......