【问题标题】:jquery masked edit for timejquery掩码编辑时间
【发布时间】:2010-02-14 01:38:25
【问题描述】:

使用meioMask Plugin 有什么方法可以设置掩码,使其接受 24 小时制的有效时间,甚至更好地接受 12 小时制?

$("#txtTime").setMask('time');

此插件有一个预定义的 24 小时“时间”掩码,但它并不完全正确,因此您可以输入无效的时间值,例如“29:00”。这个面具不适合这个目的吗?如果不适合,哪个更好?

【问题讨论】:

  • 你可能想试试启动它的插件:digitalbush.com/projects/masked-input-plugin
  • 一个警告:如果它很重要,请确保验证值服务器端,否则人们可以将自定义表单或查询字符串组合在一起以绕过限制。
  • 不是敏感信息,时间很少是
  • +1 表示维克多听起来像医生。

标签: jquery jquery-plugins


【解决方案1】:

试试这个:

$.mask.rules.H = /([0-1][0-9]|2[0-3])/;  // 24 hours
$.mask.masks.time = 'H:59';
$("#txtTime").setMask('time');

更正

规则只适用于一个字符,因此请记住这一点,您可以在输入以 '2' 开头时交换掩码并验证下一个字符为 [0-3]:

$("#txtTime").setMask("29:59")
.keypress(function() {
  var currentMask = $(this).data('mask').mask;
  var newMask = $(this).val().match(/^2.*/) ? "23:59" : "29:59";
  if (newMask != currentMask) {
    $(this).setMask(newMask);
  }
});

注意:在这种情况下,我使用的是按键事件,如果需要,请确保处理粘贴事件。

【讨论】:

  • 感谢您的回复。看起来这是朝着正确方向迈出的一步,但它根本不接受任何输入:-)
  • 我明白了,meioMask 插件似乎使用了每字符验证,我会检查它是否允许多字符规则。
  • 这一切都很好,只是它不允许像我尝试“23:32”那样的一些包含 2 的有效输入,不会让我输入最后一个“2”
  • 我会将正则表达式匹配更改为 ^2.*
  • 有了它,效果很好,我唯一需要改变的是处理 keydown 事件,或者在第三个数字之后它只是将光标移到左边 1,不知道为什么。
猜你喜欢
  • 1970-01-01
  • 2012-01-14
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多