2

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

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

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

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

我很感激这方面的任何帮助。谢谢!

4

3 回答 3

4

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

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”;
}
于 2009-05-19T05:53:19.820 回答
2

碰巧的是,a 内部对象上的isDisabledDate函数只是调用自身。因此,出于您的目的,这将起作用:CalendarDateTextBoxrangeCheckDateTextBox

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

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

于 2013-02-20T23:38:32.583 回答
1

我希望尽快实现的功能

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

于 2009-09-03T17:54:33.780 回答