javascript 使用季度验证时钟时间

m4pnthwp  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(113)

当用户输入值时,我希望在文本框中匹配以下内容。
.00
.25
.50
.75
和2个特定数字:
[0至23].00
[0至23].25
[0至23].50
[0至23].75
例如1.25、12.25、22.50等。所有上述值都是允许的

    • 不允许使用0712.1824.00等值**。
      目前,我只是检查下面将允许任何十进制值。
var charCode = (e.which) ? e.which : event.keyCode
if (
  (charCode != 46 || $(element).val().indexOf('.') != -1) &&
  (charCode < 48 || charCode > 57)
) return false;
return true;
x3naxklr

x3naxklr1#

用季度验证时钟时间

多亏了评论部分,我们都意识到这是一个 * 时钟 * 时间的验证(问题编辑反映)。
很高兴在此提醒您,在这种情况下,.000.00-应该是有效的输入,因为它表示午夜。因此,所有其他整小时整数,如1.0023.00也是有效的
不要使用键盘事件。正如@trincot建议的那样,如果用户输入".2",他将无法完成所需的数字(* 0.25 *),因为".2"(根据您的语句)已经 * 无效
相反,可以使用"blur"或其他事件,或者也可以使用Input元素pattern属性来直观地将输入标记为 * invalid
下面是匹配所需的基本正则表达式:
* 带四分之一秒的时钟时间

^(\d|[0-1]\d|2[0-3])?\.(00|15|30|45)$

或者如果您使用小数作为 * 百位数 *:

^(\d|[0-1]\d|2[0-3])?\.(00|25|50|75)$

Regex101.com demo and explanation
输入pattern attribute示例:
一个二个一个一个
使用RegExp.prototype.test()进行JS验证的理想示例

const validateNumDec = n => /^(\d|[0-1]\d|2[0-3])?\.(00|25|50|75)$/.test(n);

console.log(".00", validateNumDec(".00")); // true
console.log(".25", validateNumDec(".25")); // true
console.log("13.00", validateNumDec("13.00")); // true
console.log("23.75", validateNumDec("23.75")); // true

console.log("5", validateNumDec("5")); // false
console.log("5.13", validateNumDec("5.13")); // false
console.log("5.13", validateNumDec("23.59")); // false

最终注解

人们最终可能会简单地选择<input type="time",但正如您所看到的,step="900"900秒为15分钟)在使用时确实有效,即:键盘的向上/向下箭头(15分钟跳转),但在Chrome浏览器的弹出选择器中不受尊重:

<input type="time" min="00:00" max="18:00" step="900" required>

来自MDN文档中有关使用步骤属性的内容:

*备注

使用步骤似乎会导致验证无法正常工作(见下一节)。*
文件:

相关问题