当用户输入值时,我希望在文本框中匹配以下内容。
.00
.25
.50
.75
和2个特定数字:
[0至23].00
[0至23].25
[0至23].50
[0至23].75
例如1.25、12.25、22.50等。所有上述值都是允许的。
- 不允许使用
0
、7
、12.18
、24.00
等值**。
目前,我只是检查下面将允许任何十进制值。
- 不允许使用
var charCode = (e.which) ? e.which : event.keyCode
if (
(charCode != 46 || $(element).val().indexOf('.') != -1) &&
(charCode < 48 || charCode > 57)
) return false;
return true;
1条答案
按热度按时间x3naxklr1#
用季度验证时钟时间
多亏了评论部分,我们都意识到这是一个 * 时钟 * 时间的验证(问题编辑反映)。
很高兴在此提醒您,在这种情况下,
.00
或0.00
-应该是有效的输入,因为它表示午夜。因此,所有其他整小时整数,如1.00
到23.00
,也是有效的。不要使用键盘事件。正如@trincot建议的那样,如果用户输入
".2"
,他将无法完成所需的数字(* 0.25 *),因为".2"
(根据您的语句)已经 * 无效 。相反,可以使用
"blur"
或其他事件,或者也可以使用Input元素pattern
属性来直观地将输入标记为 * invalid 。下面是匹配所需的基本正则表达式: * 带四分之一秒的时钟时间
或者如果您使用小数作为 * 百位数 *:
Regex101.com demo and explanation
输入pattern attribute示例:
一个二个一个一个
使用RegExp.prototype.test()进行JS验证的理想示例
最终注解
人们最终可能会简单地选择
<input type="time"
,但正如您所看到的,step="900"
(900
秒为15分钟)在使用时确实有效,即:键盘的向上/向下箭头(15分钟跳转),但在Chrome浏览器的弹出选择器中不受尊重:来自MDN文档中有关使用步骤属性的内容:
*备注:
使用步骤似乎会导致验证无法正常工作(见下一节)。*
文件: