【问题标题】:Dojo form validating specific items in form tagDojo 表单验证表单标签中的特定项目
【发布时间】:2023-03-06 07:12:01
【问题描述】:

我有一个 dojo 表单,它使用 dojo 表单向导。表单有一个 标签。在表单标签中是一个dojo.wizard.Wizard。向导必须位于表单标签内。向导中有几个向导窗格。

在每个向导窗格上,我都有表单字段。我正在通过调用向导窗格 passFunction 上的方法来执行验证。但是,要使 dojo 验证 工作,我必须在表单上获取子元素并针对表单调用 validate 方法。这会验证整个表单。

这对于我想做的事情是不切实际的,因为第一个窗格有 n 个表单元素,第二个窗格有 n 个元素。当从第一个窗格上的 passFunction 调用 validate 函数时,它会验证其他窗格上尚无法访问的元素。

如何指定要为表单验证的项目?我想仅验证第一个窗格上的项目,然后移动到第二个窗格并仅验证这些项目。下面是我的代码结构:

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();

}

【问题讨论】:

    标签: javascript jquery dojo dijit.form


    【解决方案1】:

    我们需要知道要检查哪些字段。因此,我们可以为此目的向这些字段添加一个类。让我们称之为“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);
    });
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多