如何在dojo中验证多个文本框?

时间:2012-03-26 06:20:10

标签: dojo

我使用dojo toolkit作为codeigniter的设计。

我正在使用dojo对话框作为特定模块的输入表单

我面临的问题是,dojo仅验证初始输入字段,并且未在表单中验证休息字段。

我正在使用以下函数来验证表单的文本字段:

function dialogpartyclose()
{
    if(dijit.byId('txtpartyname').validate() == false)
    {   
        dijit.byId('txtpartyname').validate(true);
    }
    if(dijit.byId('txtpartyfirstname').validate() == false)
    {
       dijit.byId('txtpartyfirstname').validate(true);
    } 
    if(dijit.byId('txtpartylastname').validate() == false)
    {
        dijit.byId('txtpartylastname').validate(true);
    }
    if(dijit.byId('txtpartymobile').validate() == false)
    {
        dijit.byId('txtpartymobile').validate(true);
    }
    if(dijit.byId('txtpartyfax').validate() == false)
    {
        dijit.byId('txtpartyfax').validate(true);
    }
    if(dijit.byId('txtpartyphone').validate() == false)
    {
        dijit.byId('txtpartyphone').validate(true);
    }
    if(dijit.byId('txtpartyemail').validate() == false)
    {
        dijit.byId('txtpartyemail').validate(true);
    }
    if(dijit.byId('txtpartycity').validate() == false)
    {
        dijit.byId('txtpartycity').validate(true);
    }
    if(dijit.byId('txtpartystate').validate() == false)
    {
        dijit.byId('txtpartystate').validate(true);
    }
    if(dijit.byId('txtpartycountry').validate() == false)
    {
        dijit.byId('txtpartycountry').validate(true);
    }
}

现在如果我点击一次提交按钮,它将验证输入字段。 如果我关闭输入表单并重新打开它,那么所有字段都标记为红色,这意味着字段的最后验证不会进入其初始阶段,输入表单的最后阶段就是这样。问题是它只重新打开第一个字段,而重新打开表单和休息字段是红色标记。

Plz helppppppppp

Thnx提前

1 个答案:

答案 0 :(得分:3)

您是否正在使用dijit.form.ValidationTextBox和dijit.form.Form作为输入字段和表单。

如果是这样,您不需要似乎验证所有字段的dialogpartyclose()方法。

提交后,dijit.form.Form将在每个dijit表单字段上调用验证器函数

例如:

<input type="text"
    name="txtpartyname"
    id="txtpartyname"
    dojoType="dijit.form.ValidationTextBox"
    required="true"
    constraints="{'constraint1': 'value1'}"
    validator=validateName
    intermediateChanges=false
    invalidMessage="Please enter a valid name. Name must be...." />

然后,您可以将您自己的验证器功能实现为:

function validateName(value, constraints)
{
    var isValid = false;

    //do the validation here
    if ( <name validation code here>)
    {
       isValid = true;
    }
    //constraints are optional - they get passed into the validator function
    if(constraints && constraints['constraint1'] != null)  {
       //do constraints based processing if required
    }
    return isValid;
}

这应该照顾正确的验证。只有在用户单击“提交”按钮时才会出现这些验证 当您关闭并重新打开对话框时,dijit.form.Form

将不会运行验证

如果您使用dijit Form输入元素和常规HTML输入元素的混合,您可以在表单级别连接您自己的validate()函数