有什么方法可以循环遍历 dijit 表单中的所有 dijit 字段并打印出它们是否有效。我只问是因为我的“onValidStateChange”功能禁用了我的提交按钮,我不知道为什么它不会重新启用它。
问问题
3170 次
2 回答
6
您可以使用 dijit.form.Form getChildren()
获取表单中的所有子窗口小部件,然后用于isValid()
检查该字段是否有效;
var form, iterFunction;
form = dijit.byId('form');
iterFunction = function(widget){
console.log(widget.isValid());
};
dojo.forEach(form.getChildren(), iterFunction);
于 2011-10-05T12:20:07.897 回答
3
默认情况下,form.validate()
也会验证所有子小部件。如果任何表单小部件分别被动态添加到表单/从表单中删除,则连接所有子小部件,然后验证
form = dijit.byId('form_id');
form.connectChildren();
form.validate();
如果表单有多个选项卡(TabContainer),“connectChildren”函数实际上会将所有后代级别的所有字段附加到父表单对象。我们不需要手动运行循环,除非需要知道特定字段以进行更多操作。
对于特殊情况:如果表单包含许多选项卡并且需要一次验证每个表单并导航例如:cp1 和 cp2 是 2 个选项卡
var mytab1 = dijit.byId("cp1");
var canNavigate = true;
var highlight = function(widget){
var v = widget.validate;
if(!v) return true;
widget._hasBeenBlurred = true;
if(!widget.validate()) {
canNavigate = false;
}
};
dojo.forEach(mytab1.getChildren(), highlight);
if(canNavigate) {
dijit.byId("tc").selectChild("cp2");
}
于 2013-08-24T10:41:02.093 回答