关于Dijit.Form.DateTextBox的快速提问
http://docs.dojocampus.org/dijit/form/DateTextBox
此页面包含以下内容:“还会针对开发人员提供的约束进行验证,例如最小值,最大值,一周中的有效天数等。”
我似乎无法找到允许我在一周中提供约束的文档。例如,我需要一个DateTextBox,它只允许用户选择星期日发生的日期。
我很感激任何帮助。谢谢!
答案 0 :(得分: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) return ".*"; return "0"; }
答案 1 :(得分:2)
碰巧,isDisabledDate
内的Calendar
对象上的DateTextBox
功能只会调用rangeCheck
本身的DateTextBox
。因此,出于您的目的,这将起作用:
dijit.byId('toDate').rangeCheck = function(date,constraints) {
var day=date.getDay();
return day===0;
}
如果你还想要最小/最大的东西,你必须重新添加约束逻辑,但这解决了所述的问题,并且它很短。
答案 2 :(得分:1)
我希望很快得到的一项功能