【问题标题】:jquery masked input have only first number optional rest mandatoryjquery屏蔽输入只有第一个数字可选其余强制
【发布时间】:2013-03-12 20:03:43
【问题描述】:

我正在使用 jquery 屏蔽输入插件,并且需要具有以下格式的电话字段:

1 (222) - 000 - 1114

我的代码如下所示:

$("#myPhone").mask("9 (999) - 999 - 9999");

现在我似乎无法让它工作以使第一个数字是可选的,但其余的都是强制性的。所以以下数字是有效的

1 (222) - 000 - 1114
  (222) - 000 - 1114

以下数字无效

1 (222) - 000 - 11
  (222) - 00  - 0011

使用 "?9 (999) - 999- 9999" 将不起作用,因为它使整个事情变得可选

如果这不能在掩码中完成,有人可以用正则表达式帮助我实现这一点吗?

【问题讨论】:

  • 我会先检查是否有 11 位数字,然后在函数中使用掩码。
  • @GGio 是的,你如何确保第一个数字是一个数字?就我而言,我想知道它是否是 +

标签: javascript jquery maskedinput jquery-mask


【解决方案1】:

试试这个:

$.mask.definitions['~'] = '([0-9] )?';
$("#myPhone").mask("~(999) - 999 - 9999");

【讨论】:

  • 完美运行,非常感谢。一个问题虽然第一个数字不是严格的数字,但如果我输入字母它会输入字母
  • 这不是一个好的解决方案。如果您开始在输入中输入,这可以解决问题。但是,如果您从数据库中恢复数据(例如)并应用掩码,则您的输入为空白。
  • 是的,你如何确保第一个数字是一个数字?就我而言,我想知道它是否是 +
【解决方案2】:

它并不完美,但你可以使用数字或空格:

$.mask.definitions['~'] = '[0-9 ]';
$("#myPhone").mask("~(999) - 999 - 9999");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多