2012-03-26 38 views
1

我使用dojo工具包作爲codeigniter的設計。我如何驗證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提前

回答

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表單輸入元素和常規HTML輸入元素,您可以在表單級別連接自己的validate()函數