【问题标题】:Domino 9 / Dojo 1.8 - Date Time Picker without default valueDomino 9 / Dojo 1.8 - 没有默认值的日期时间选择器
【发布时间】:2013-04-02 20:14:31
【问题描述】:

我想要一个没有默认值的日期时间选择器控件。似乎不可能了:-(

要重现,请创建一个空白 XPage 并放置一个 Date Time Picker 控件。在浏览器中打开 XPage,您将看到它默认为今天。

我没有找到将默认值设置为空值的任何方法。我尝试将所有属性/数据/默认设置为 0、null、空字符串等 - 没有运气。

我尝试了 data-dojo-probs 属性的值:'',这将默认设置为 1970-1-1,但不是空白。

有什么想法吗?

【问题讨论】:

标签: xpages


【解决方案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> 

【讨论】:

    【解决方案2】:

    我不知道它在注释 9 中是如何工作的,但您可以使用 CSJS 将其删除,例如:

    var field= dojo.byId('#{id:field}')
    field.value ="";
    

    希望对你有帮助..

    【讨论】:

      【解决方案3】:

      在应用程序中,我之前使用以下代码在 dateTimeHelper 上应用了 dojoType:

      <xp:dateTimeHelper id="dateTimeHelper1" dojoType="dijit.form.DateTextBox">
      </xp:dateTimeHelper>
      

      这是为了解决以前 Domino 版本中的一个问题,即在某些风格的 IE 中选择选择器后页面会立即刷新。

      此代码似乎在 R9 上运行良好,无需变通方法。

      【讨论】:

      • 在 R9 中工作,但随后输入框的日历图标消失了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多