5.用Dojo处理表单
主要讲的是下面的代码片断,当用户提交表单的时候,需要先主动执行一下类似下面的代码,保证数据正确后在去执行submit操作:
function processForm() {
var custForm = dijit.byId("custForm");
var firstInvalidWidget = null;
dojo.every(custForm.getDescendants(), function(widget){
var value = widget.getValue ? widget.getValue() : widget.value;
var name = widget.name;
console.log("Name: ", widget.name);
if(!name){ return true; }
if(name=="comments"){ return true; }
if(name=="serviceDate"){ return true; }
firstInvalidWidget = widget;
console.log("widget: ", widget);
console.log("valid: ", widget.isValid);
return !widget.isValid || widget.isValid();
});
if (firstInvalidWidget != null) {
firstInvalidWidget.focus();
} else {
custForm.submit();
}
}
先声明有些代码我也没有读明白,但经过测试是正确的。大体的意思就是通过dojo.ervery函数迭代cusForm里的每个widget,并调他们的isValid函数,在我的测试过程中始终没有调用custForm.submit(),但确可以正确的提交表单?