关于 Dijit.Form.DateTextBox 的快速问题
http://docs.dojocampus.org/dijit/form/DateTextBox
此页面包含以下内容:“还针对开发人员提供的约束进行验证,例如最小值、最大值、一周中的有效日期等。”
我似乎找不到允许我对一周中的日子进行限制的文档。例如,我需要一个 DateTextBox,它只允许用户选择发生在星期日的日期。
我很感激这方面的任何帮助。谢谢!
关于 Dijit.Form.DateTextBox 的快速问题
http://docs.dojocampus.org/dijit/form/DateTextBox
此页面包含以下内容:“还针对开发人员提供的约束进行验证,例如最小值、最大值、一周中的有效日期等。”
我似乎找不到允许我对一周中的日子进行限制的文档。例如,我需要一个 DateTextBox,它只允许用户选择发生在星期日的日期。
我很感激这方面的任何帮助。谢谢!
我为此仔细研究了源代码,我认为该手册可能会误导你一点——没有办法使用对象的约束来做到这一点。他们用户论坛的以下引用似乎支持了我的发现:
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”; }
碰巧的是,a 内部对象上的isDisabledDate
函数只是调用自身。因此,出于您的目的,这将起作用:Calendar
DateTextBox
rangeCheck
DateTextBox
dijit.byId('toDate').rangeCheck = function(date,constraints) {
var day=date.getDay();
return day===0;
}
如果您还想要最小/最大的东西,则必须重新添加约束逻辑,但这解决了上述问题,而且很短。
我希望尽快实现的功能