【问题标题】:Turn Regular Expression into Javascript input mask将正则表达式转换为 Javascript 输入掩码
【发布时间】:2016-11-04 15:51:57
【问题描述】:

最终我想要一个只允许输入整数的掩码,或者如果输入小数/句点:允许小数点后 0 - 2 位数字。

有效输入

1
1.
1.1
1.11
111111111
111111111.
111111111.1
111111111.11

无效输入

a
a.
1.a
1.111
1.1111
  • 字符串允许任意数量的数字字符,但只允许 1 个小数/句点
    • 如果存在句点/小数:只允许小数点后 2 位字符

这个正则表达式就是这样做的:

^\d*\.?([\d]){0,2}$

现在我需要将此作为掩码应用于输入。我正在使用Robin Herbots' Inputmask。我真的很难完成这项工作。

我知道有别名currency,但这并不完全符合预期。我想要的是输入默认为焦点/非焦点空白,除非有输入。 currency 默认为 0.00。我还希望允许用户从该字段中删除所有内容,因此它将为空白。 currency 不允许您将输入留空。相反,它只允许您离开字段0.00

$('.moneyfield').inputmask("999", {rightAlign: true, numericInput: true});

具体的面具应该放在“999”的位置。我不知道如何使用内置掩码,所以这就是我尝试将正则表达式插入掩码的原因。到目前为止,我对这两种策略都没有成功。

另一种尝试是使用 currency 别名,然后将其覆盖为我希望它执行的操作。我也没有成功。这是currency掩码的定义:

    currency: {
        prefix: "$ ",
        groupSeparator: ",",
        alias: "numeric",
        placeholder: "0",
        autoGroup: !0,
        digits: 2,
        digitsOptional: !1,
        clearMaskOnLostFocus: !1
    }

【问题讨论】:

  • 没有任何解释的否决票?
  • 您可以在 HTML5 中轻松使用输入的pattern 属性。它允许您完全按照您的需要使用正则表达式屏蔽输入元素。查看documentation
  • @VivekPradhan 很棒的建议,不幸的是我需要它才能与 Safari 一起使用,而 Safari 不支持此功能。

标签: javascript jquery jquery-inputmask


【解决方案1】:

我想通了。您只需要覆盖 currency 别名中的几个字段:

$('.money_field').inputmask({alias: 'currency', rightAlign: true, placeholder: "", prefix: '', autoGroup: false, digitsOptional: true});

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2019-05-11
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多