Dojo表单验证表单标记中的特定项

时间:2014-04-12 21:43:30

标签: javascript jquery dojo dijit.form

我有一个使用 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();

}

1 个答案:

答案 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);
});

现在,在类选择器的帮助下,我们仅成功验证了特定字段。