【问题标题】:Add auto slashes to date field extjs将自动斜杠添加到日期字段 extjs
【发布时间】: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


【解决方案1】:

可以使用 EXTJS 日期字段或 Ext.date 提供的任何配置选项,而不是使用纯 JavaScript 解决方案。

没有

我还想知道这是否可能在用户输入日期的同一时刻(即通过捕获任何键盘事件。)

没有

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 2012-03-31
    • 2018-05-27
    • 1970-01-01
    • 2017-11-30
    • 2020-07-27
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多