我有一个使用 dojo表单向导的 dojo 表单。表单有一个 标记。在表单标记内是 dojo.wizard.Wizard 。要求向导位于表单标记内。在向导中有几个向导窗格。
在每个向导窗格中,我有表单字段。我通过调用向导窗格 passFunction 上的方法来执行验证。但是,要使 dojo验证起作用,我必须在表单上获取子元素并对表单调用validate方法。这样可以验证整个表格。
这对于我想要做的事情是不实际的,因为第一个窗格有n个表单元素,第二个窗格有 n 个元素。当从第一个窗格中的 passFunction 调用validate函数时,它会验证其他窗格中尚无法访问的元素。
如何指定要为表单验证的项目?我想仅验证第一个窗格上的项目,然后移动到第二个窗格并仅验证这些项目。 Under是我的代码结构:
JSP
<form data-dojo-type="dijit/form/Form" id="myForm" />
<div data-dojo-type="dojox.widget.Wizard" data-dojo-props="style: 'height:450px; width: 600px'">
<div dojoType="dojox.widget.WizardPane" id="page1" passFunction="validatePage1" >
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'First Name Required !'" id="fnameTextBox" title="First Name" placeholder="Your First Name" />
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'Last Name Required !'" id="lnameTextBox" title="Last Name" placeholder="Your Last Name" />
</div>
<div dojoType="dojox.widget.WizardPane" id="page2" passFunction="validatePage2" >
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'Age Is Required !'" id="ageTextBox" title="Age" placeholder="Your Age" />
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="
regExp: '[\\w]+',
required: true,
invalidMessage: 'Phone Number Required '" id="phoneTextBox" title="Phone" placeholder="Your Phone Number" />
</div>
</div>
</form>
在validatePage1中,我只想验证姓氏和名字字段,一旦完成,当我移动到第二页时,我想验证年龄和电话号码。我目前只检查空值。
的Javascript
dojo.require("dijit/form/Form");
dojo.require("dijit/form/Button");
dojo.require("dijit/form/ValidationTextBox");
dojo.require("dijit/Tooltip");
function validatePage1(){
var myform = dijit.byId('myForm');
myform.connectChildren();
myform.validate();
}
答案 0 :(得分:0)
我们需要知道要检查的字段是什么。所以我们可以为这个目的添加一个类到这些字段。让我们称之为“chkThisField”。
//a function to validate the given field
var highlight = function(widget){
if(!widget.validate) return true;
widget._hasBeenBlurred = true;
widget.validate();
};
var fields = dojo.query(".chkThisField");
//above line is to get array of all fields with the "chkThisField" class
fields.forEach(function(fld){
var widget = dijit.getEnclosingWidget(fld);
highlight(widget);
});
现在,在类选择器的帮助下,我们仅成功验证了特定字段。