我想要一个没有默认值的日期时间选择器控件。似乎不可能了:-(
要重现,请创建一个空白 XPage 并放置一个 Date Time Picker 控件。在浏览器中打开 XPage,您将看到它默认为今天。
我没有找到任何方法将默认值设置为空值。我尝试将所有属性/数据/默认设置为 0、null、空字符串等 - 不走运。
我尝试了带有 value:'' 的 data-dojo-probs 属性,这将默认设置为 1970-1-1,但不是空白。
有任何想法吗?
我想要一个没有默认值的日期时间选择器控件。似乎不可能了:-(
要重现,请创建一个空白 XPage 并放置一个 Date Time Picker 控件。在浏览器中打开 XPage,您将看到它默认为今天。
我没有找到任何方法将默认值设置为空值。我尝试将所有属性/数据/默认设置为 0、null、空字符串等 - 不走运。
我尝试了带有 value:'' 的 data-dojo-probs 属性,这将默认设置为 1970-1-1,但不是空白。
有任何想法吗?
这是 ND9 中的一个已知问题,报告为 SPR DEGN966F5V。
该问题的解决方法(来自 SPR)是在 postCreate 函数中修改小部件原型,以防止值被重置。
require([
"dojo/_base/lang",
"ibm/xsp/widget/layout/DateTextBox",
"ibm/xsp/widget/layout/TimeTextBox",
"ibm/xsp/widget/layout/DateTimeTextBox"
], function(lang, DateTextBox, TimeTextBox, DateTimeTextBox){
var a = {};
lang.mixin(a, {
postCreate: function(){
this.inherited(arguments);
}
});
DateTextBox.extend(a);
TimeTextBox.extend(a);
DateTimeTextBox.extend(a);
});
这是它工作的一个例子。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script clientSide="true">
<xp:this.contents><![CDATA[
require([
"dojo/_base/lang",
"ibm/xsp/widget/layout/DateTextBox"
], function(lang, DateTextBox){
var a = {};
lang.mixin(a, {
startup: function(){
this.inherited(arguments);
this.set("value", null);
}
});
DateTextBox.extend(a);
});
]]></xp:this.contents>
</xp:script>
</xp:this.resources>
<xp:inputText id="inputText1" value="#{sessionScope.inputText1}">
<xp:this.converter>
<xp:convertDateTime type="date" />
</xp:this.converter>
<xp:dateTimeHelper />
</xp:inputText>
</xp:view>
我不知道它在注释 9 中是如何工作的,但您可以使用 CSJS 将其删除,例如:
var field= dojo.byId('#{id:field}')
field.value ="";
希望能帮助到你..
在应用程序中,我之前使用以下代码在 dateTimeHelper 上应用了 dojoType:
<xp:dateTimeHelper id="dateTimeHelper1" dojoType="dijit.form.DateTextBox">
</xp:dateTimeHelper>
这是为了解决以前 Domino 版本中的一个问题,即在某些风格的 IE 中选择选择器后页面会立即刷新。
此代码似乎在 R9 上运行良好,无需变通方法。