【问题标题】:Allowing non-numbers in an ExtJS date-picker input value在 ExtJS 日期选择器输入值中允许非数字
【发布时间】:2011-12-07 11:32:21
【问题描述】:

我对此感到困惑。我们有一个输入生日的 ExtJS 表单。但是,通常不知道出生的月份或日期。用户的约定是在未知时输入 xx——xx/xx/1984。

如果你需要输入xx,你可以输入,否则你可以使用ExtJS datepicker。保存工作正常,但如果您以 xx/xx/1984 格式保存,然后再次查看表单,而不是显示输入的生日,该字段为空白。那是因为 ExtJS 会阻塞日期字段中的非数字。

PHP 表单:

echo "<input id=\"dobDt\" name=\"dobDt\" value=\"" . getData("dobDd","textarea") . "/" . getData("dobMm","textarea"). "/" .getData ("dobYy", "textarea") . "\" type=\"text\">

ExtJ:

dobDtFormat = new Ext.form.DateField({
    fieldLabel: '',
    format: 'd/m/Y',
    maskRe : /[\Xx{1,4}\d{1,2}\/]/,
    validationEvent: false,
    allowBlank:true
});
dobDtFormat.applyToMarkup(document.mainForm.dobDt);

Ext 将输入替换为its date field。关于如何让“xx”出现的任何想法?

当日历出现并且您选择一天时,也不确定如何处理“xx”。理想情况下,我们希望“xx/xx/1980”出现在输入中,但是当您打开日历时,它会解释为“01/01/1980”。

【问题讨论】:

  • 由于 ExtJS 不支持开箱即用的“xx”日期格式,因此您将

标签: javascript forms extjs datepicker


【解决方案1】:

由于 ExtJS 不支持开箱即用的“xx”日期格式,因此您必须扩展 DateField 对象并可能覆盖它的一些功能,例如:

myNamespace.MyDateField = Ext.extend(Ext.form.DateField, {
    //your configs, functions to support "xx" behavior
}

听起来您还需要仔细考虑并更仔细地定义该组件应如何在所有可能出现的用例中发挥作用。例如,用户如何指定哪些字段(月、日和/或年)应该有“xx”而不是数字? DateField 不是为此而设计的,因此您可能需要为此添加一些表单字段。

有关创建您自己的自定义 ExtJS 组件的更多信息,请参阅此处的 Sencha 指南: http://docs.sencha.com/ext-js/4-0/#!/guide/components

(查找标题为“创建自定义组件”的部分,大约在页面的一半处。)

希望这对您有所帮助。干杯!

【讨论】:

  • 反响很好。我们正在努力扩展 DateField 对象,但您对定义使用范围的评论很有价值。在这种情况下,我们确实需要确定用户的工作流程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多