ExtJS:验证整小时时间
ExtJS: Validate full hour time
我正试图在ExtJS中创建一个带有时间字段的表单。此时间字段应仅接受整小时。
配置如下:
{
name: 'validFromTime',
fieldLabel: 'Valid From Time',
xtype: 'timefield',
increment: 60,
allowBlank: false
}
60分钟的增量只会影响选取器UI,但不会影响验证。因此,我必须验证自己,以防止用户在时间字段中键入凌晨1:20之类的内容。
我试着用以下regex配置来做到这一点:
{
name: 'validFromTime',
fieldLabel: 'Valid From Time',
xtype: 'timefield',
increment: 60,
regex: /^([1-9]|1[0-2]):(00)'s([A|P]M)$/,
invalidText: 'Must be a full hour in format "1:00 AM/PM".',
allowBlank: false
}
根据这个在线正则表达式检查器,这个正则表达式是正确的:https://regex101.com/r/uR9sM0/1
然而,ExtJS现在总是将此字段标记为无效,即使用户选择了正确的时间,如上午11:00
为了解决这个问题,我试着少配一点。我能做的最多的工作是:
/([1-9]|1[0-2]):00.*/
只要我添加任何其他部分,如^或'',它就不再起作用。你知道我缺少什么吗?
如注释中所述,时间字段的基本值是Date对象。因此,我建议验证Date对象而不是输入文本,这不仅是因为它比构建正则表达式容易得多,还因为时间字段可以识别除显示格式之外的一些其他输入模式(请参阅format
和altFormats
配置选项(,在使用正则表达式验证时,这些模式将被完全阻止。
您可以使用validator
配置选项来提供一个用于自定义验证的函数,该函数将在字段的内置验证之外运行:
validator: function() {
var value = this.getValue();
if (Ext.isDate(value) && value.getMinutes() !== 0) {
return 'Must be a full hour in format "1:00 AM/PM".';
}
return true;
}
请注意,对象类型的检查是强制性的,因为如果字段无法解析用户的输入,value
将不是日期对象。
小提琴:https://fiddle.sencha.com/#fiddle/pu2
相关文章:
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 24小时输入时间:mm格式跨浏览器
- 在ISO转换后,JavaScript时间滞后了一个小时
- 将时间格式更改为24小时格式
- 在 javascript 中将 24 小时时间转换为 12 小时,运行秒数
- 在 Javascript 中以 24 小时时间格式计算时间差异
- 将滑块的 24 小时时间格式转换为 12 小时
- 如何使用正则表达式(正则表达式)验证 12 小时时间
- 此插件是否有 24 小时时间格式
- 12 小时时间格式的正则表达式
- 在 JavaScript 中表示半小时时间增量,如果其他 if
- JQuery输入12小时时间格式的掩码
- 显示12小时和24小时时间
- 任务根据小时时间轴网格进行相应调整
- 使用Javascript将JSON数据24小时时间转换为12小时
- 如何将字符串转换为24小时时间
- ExtJS:验证整小时时间
- 使用javascript将12小时时间格式转换为24小时格式
- jQuery jqPlot库12小时时间Y轴反演问题
- 如何使用Javascript将24小时时间更改为12小时时间