我通过提供一个属性更改了dijit/form/DateTextBox
的datePattern
<form dojoType="dijit.form.Form" data-dojo-id="calc_form" id="calc_form">
<input type="text" data-dojo-type="dijit/form/DateTextBox" data-dojo-id="CONTRACT_DATE"
id="CONTRACT_DATE" name="CONTRACT_DATE"
constraints="{datePattern:'MM-dd-yyyy', strict:true}" />
</form>
即属性是constraints="{datePattern:'MM-dd-yyyy', strict:true}"
,我得到的日期模式在页面中正确显示为'01-28-2016'
。
但是当我尝试使用dojo.formToJson("formID")
获取包含dijit/form/DateTextBox
的表单的JSON时,我得到了一个与指定模式不同的值:'2016-01-28'
为什么?有什么解决办法吗?
2条答案
按热度按时间rekjcdws1#
datePattern的唯一用途是格式化用户在DateTextBox中键入日期的方式。
无论用户以什么格式输入日期,Dojo内部都能在ISO date format * 中工作,这也使您(程序员)更容易。
如果您正在考虑将ISO转换为另一种专有格式,有一个模块可以实现这一点。
rpppsulh2#
问题是在
dojo.formToJson
中,无论您在dijit/form/DateTextBox
输入中指定什么格式,它都会返回默认的日期格式。因此,我建议在生成的jsonForm中格式化日期,
下面是一个解决方案:
首先导入所需的js,
"dojo/date/locale"
用于更改日期模式"dojo/json"
用于解析o json对象或反向解析(对象到字符串)然后声明
formatJsonFormDates
函数(参数在代码中解释,它返回一个带有格式化日期的新jsonForm)如果Form中有许多日期,则可通过在Array参数中传递输入日期的
name
属性来帮助您将所有日期转换为一个最后,在获得jsonForm之后,在其上应用函数:
。