如何以指定格式从dijit.form.DateTextBox中获取日期?

7

我在一个HTML文件中有一个Dojo文本框。现在我想以字符串格式“yyyy-mm-dd”检索文本框中的日期。我该怎么做?

  dojoType="dijit.form.DateTextBox"

我该如何做呢?

3个回答

7
假设您有一个引用“widget”到您的DateTextBox小部件,使用类似于“dijit.byId(...)”或“dijit.byNode(dojo.query(...))”的东西,这将获取JavaScript日期对象并根据ISO 8601标准格式化它(yyyy-mm-dd),独立于您所使用的显示或语言环境。
 dojo.require('dojo.date.stamp');
 ...
 var dateObject = widget.get('value');
 var isoFormat = dojo.date.stamp.toISOString(dateObject, {selector: 'date'});

5

试试这个:

HTML:
<input type="text" name="date1" id="date1" value="2005-12-30"
   dojotype="dijit.form.DateTextBox" required="true" />

要获取显示的值,您可以使用此日期文本框的方法:
// get widget:
    var dtb = dijit.byId('date1');
// get value
    alert(dtb.get('displayedValue'));

注意*:

Dojo会根据用户的语言环境格式化日期。

如果您要使用与用户语言环境格式不同的格式,请为日期文本框指定约束属性。

<input type="text" name="date1" id="date1" value="2005-12-30" 
  constraints="{datePattern:'yyyy-MM-dd', strict:true}" 
  dojotype="dijit.form.DateTextBox" required="true" />

HTML Page - example


你不需要将可视化显示更改为yyyy-mm-dd来实现此目的。Dojo使Date属性与displayedValue独立。 - peller
@peller:是的,我知道这个。然而,如果我理解正确,目标是以正确的格式从文本框中获取值(例如,发送到服务器),而不是更改显示格式。我还认为手动更改日期格式是不好的做法。日期应根据用户的文化来显示。 - Andrei

0

这是一个老问题,但你可以直接使用小部件的toString方法

var isoString = dijit.byId(widgetId).toString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接