2011-12-07 39 views
0

我很困惑这一点。我们有一个输入生日的ExtJS表格。但是,通常不知道出生月份或日期。用户的惯例是在未知时输入xx's - xx/xx/1984。允许ExtJS日期选择器输入值中的非数字

如果您需要输入xx,您可以键入,否则您可以使用ExtJS日期选择器。保存工作正常,但如果保存为xx/xx/1984格式,然后再次查看表单,而不是显示输入的出生日期,则该字段为空。这是因为ExtJS在日期字段中的非数字上扼流。

PHP的形式:

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

ExtJS的:

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); 

分机替换its date field输入。有关如何允许“xx”出现的任何想法?

也不知道如何处理'xx'当日历出现,你选择一天。理想情况下,我们希望'xx/xx/1980'出现在输入中,但是当您打开日历时它将解释为'01/01/1980'。

+0

因为ExtJS不支持开箱即用的“xx”日期格式,所以您会收到 –

回答

1

由于ExtJS的先后为“XX”的日期格式开箱即用的支持,你就必须延长DateField对象,可能覆盖它的一些功能,如:

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

它还听起来就像你需要真正的思考和更仔细地定义这个组件应该如何在所有可能出现的用例中起作用。例如,用户将如何指定哪些字段(月,日和/或年)应具有“xx”与数字? DateField不是为此设计的,因此您可能需要为此目的添加一些表单域。

欲了解更多有关创建你自己定制的ExtJS的组件,请参阅煎茶指南这里: http://docs.sencha.com/ext-js/4-0/#!/guide/components

(查找标题为“创建自定义组件”,约一半下来的页面。)

希望这可以帮助你。干杯!

+0

很好的回应。我们正在努力扩展DateField对象,但您对定义使用范围的评论是有价值的。在这种情况下,我们确实需要确定用户的工作流程。 – Voodoo

+0

对,很高兴帮助! –

相关问题