【发布时间】:2019-10-29 06:27:25
【问题描述】:
我在 extjs 中使用了一个日期字段,我希望这样每当用户通过键盘手动添加 日期(而不是通过从日期选择器中选择日期) 时,应该自动添加斜杠用户输入的日期。
例如:
如果输入的日期是 2122013,那么它应该被格式化为 2/12/2013 等等。
我有一个纯 JavaScript 解决方案,用于下面给出的表单中的简单文本字段,它可以很好地向文本字段添加斜杠,我想知道的是,通过使用可以自动添加斜杠EXTJS 日期字段或 Ext.date 提供的任何配置选项,而不是使用纯 JavaScript 解决方案。
当前可用的 JAVASCRIPT 代码:
function FixShortDate(txtBox) {
if (txtBox == null) {
return ''
}
var re = new RegExp(/(\d{6})(\d{2})?/);
if (re.test(txtBox.value)) {
if (txtBox.value.length == 8) {
txtBox.value = txtBox.value.substring(0, 2) + '/' + txtBox.value.substring(2, 4) + '/' + txtBox.value.substring(4, 8)
}
if (txtBox.value.length == 7) {
txtBox.value = txtBox.value.substring(0, 2) + '/' + txtBox.value.substring(2, 3) + '/' + txtBox.value.substring(3, 8)
}
if (txtBox.value.length == 6) {
if (txtBox.value.substring(4, 6) < 20) {
txtBox.value = txtBox.value.substring(0, 2) + '/' + txtBox.value.substring(2, 4) + '/20' + txtBox.value.substring(4, 6);
} else {
txtBox.value = txtBox.value.substring(0, 2) + '/' + txtBox.value.substring(2, 4) + '/19' + txtBox.value.substring(4, 6);
}
}
}
return txtBox.value;
}
另外我想知道这是否可能在用户输入日期的同一时刻(即通过捕获任何键盘事件。)
【问题讨论】:
-
如果您退出 ExtJs 字段,则会为您格式化日期。
-
我已经检查过了,它只有在您以任何特定格式输入 8 位数字时才会起作用。在我的情况下,用户可能会输入少于 8 位数字的日期,例如 2 2 2013 ......然后它不会工作。
-
但如果您尝试提出您的要求,您不知道用户是否输入
22或表示 2 月 2 日。 -
所以你是建议强制要求8位数字还是有其他出路..?
-
我问过我工作中的测试人员,他们说这不是强制性的。所以我猜我们需要另一种方式:) 你看@altFormats 配置了吗?
标签: javascript extjs dom-events datetime-format