【问题标题】:Constraints on Dijit DateTextBox [Valid days of the week]Dijit DateTextBox 上的限制 [一周中的有效日期]
【发布时间】:2009-05-18 22:00:32
【问题描述】:

关于 Dijit.Form.DateTextBox 的快速问题

http://docs.dojocampus.org/dijit/form/DateTextBox

此页面包含以下内容:“还针对开发人员提供的约束进行验证,例如最小值、最大值、一周中的有效天数等。”

我似乎找不到允许我对一周中的日期进行限制的文档。例如,我需要一个 DateTextBox,它只允许用户选择发生在星期日的日期。

如果能提供任何帮助,我将不胜感激。谢谢!

【问题讨论】:

    标签: javascript constraints widget dojo


    【解决方案1】:

    我为此仔细研究了源代码,我认为该手册可能会误导您一点 - 没有办法使用对象的约束来做到这一点。他们用户论坛中的以下引用似乎支持了我的发现:

    DateTextBox 不允许您自定义 此时为 isDisabledDate。它只是 让您设置最小值/最大值。你会 可能必须修补或子类 DateTextBox 提供你自己的 isDisabledDate 实施和 在验证期间检查。

    您可以在http://dojotoolkit.org/forum/dijit-dijit-0-9/dijit-support/datetextbox-mondays-only-selectable#comment-19508 看到此类 DateTextBox 子类的示例。

    如果这对您来说工作量太大,DateTextBox 确实源自 dijit.form.ValidationTextBox,因此我们可以使用此小部件的 regExpGen 创建验证器 - 它不会阻止我们选择无效日期,但会导致 dijit将小部件标记为无效并向用户提供“输入的值无效”。

    dijit.byId('toDate').regExpGen = function() { if (dojo.date.locale.format(this.value, {datePattern: "E", selector: "date"}) == 6) 返回 ”。*”; 返回“0”; }

    【讨论】:

    • 是否可以访问 DateTextBox 包含的 Calendar 对象。当我们可以直接访问它时,我们已经设法禁用周末。
    【解决方案2】:

    碰巧的是,DateTextBox 内的Calendar 对象上的isDisabledDate 函数只是在DateTextBox 本身上调用rangeCheck。因此,出于您的目的,这将起作用:

    dijit.byId('toDate').rangeCheck = function(date,constraints) {
      var day=date.getDay();
      return day===0;
    }
    

    如果您还想要最小/最大内容,则必须重新添加约束逻辑,但这解决了上述问题,而且很短。

    【讨论】:

      【解决方案3】:

      我希望尽快实现的功能

      http://bugs.dojotoolkit.org/ticket/4765

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 2016-04-19
        • 2015-03-10
        相关资源
        最近更新 更多