Dijit DateTextBox 上的限制 [一周中的有效日期]
Posted
技术标签:
【中文标题】Dijit DateTextBox 上的限制 [一周中的有效日期]【英文标题】:Constraints on Dijit DateTextBox [Valid days of the week] 【发布时间】:2009-05-18 22:00:32 【问题描述】:关于 Dijit.Form.DateTextBox 的快速问题
http://docs.dojocampus.org/dijit/form/DateTextBox
此页面包含以下内容:“还针对开发人员提供的约束进行验证,例如最小值、最大值、一周中的有效天数等。”
我似乎找不到允许我对一周中的日期进行限制的文档。例如,我需要一个 DateTextBox,它只允许用户选择发生在星期日的日期。
如果能提供任何帮助,我将不胜感激。谢谢!
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Dijit DateTextBox 上的限制 [一周中的有效日期]的主要内容,如果未能解决你的问题,请参考以下文章
是否可以为 dijit.form.DateTextBox 指定显示格式
如何以给定格式从 dijit.form.DateTextBox 获取日期?
dojo / mvc / at不以约束datePattern的格式返回dijit / form / DateTextBox