我使用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提前
答案 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()函数