2011-11-03 15 views
0

我有一個表單正在驗證與Jquery's Validation Plugin,我需要一種方法,至少有2個驗證通過Ajax在同一個領域...使用2x遠程方法的單個字段的JQuery驗證插件

例如:我有一個名爲Login的字段,它接受用戶名或電子郵件,我需要驗證它是否是數據庫中的現有電子郵件,或者它是數據庫中的現有用戶名,返回不同的消息並執行2個不同的消息URL來做這些驗證。

是否有不同的消息和URL調用2個不同的遠程方法,或者我應該添加2個基於AJAX同步調用的新方法嗎?

編輯

好吧,也許我應該說我爲什麼要叫2種不同的遠程方法或創建2 AJAX同步調用的原因:

的問題是,我使用Zend和我做一個可以驗證服務器端(通過PHP)和客戶端(通過Jquery Validate,由原始的Zend Validators擴展的PHP類創建)的錯誤的系統。

class Esytek_Form_JqueryValidator_NotEmpty extends Zend_Validate_NotEmpty implements Esytek_Form_JqueryValidator_Interface { 

    public function elementSetOptions(Zend_Form_Element $element){ 
     $element->setRequired(true); 
    } 

    public function getJqueryCode(){ 
     return 'required: true,'; 
    } 

    public function getJqueryMessage($mensagem){ 
     foreach ($this->_messageVariables as $ident => $property) { 
      $mensagem = str_replace("%$ident%", (string) $this->$property, $mensagem); 
     } 
     return 'required: "<br>'.$mensagem.'",'; 
    } 

    public function getNewJqueryFunction(){ 
     return null; 
    } 

    ... 
} 

Esytek_Form_JqueryValidator_Interface

interface Esytek_Form_JqueryValidator_Interface extends Zend_Validate_Interface{ 

    public function elementSetOptions(Zend_Form_Element $element); 

    public function getJqueryCode(); 

    public function getJqueryMessage($mensagem); 

    public function getNewJqueryFunction(); 
} 

還有另一類是往大了放在那裏,但是,總之,它是所有調用每個Jquery的驗證的方法,彙總所有在一個字符串中的JQuery代碼,然後在表單中,我們應該調用一個方法來寫入運行驗證的jquery代碼。

在這種情況下,我想做一個類,可以在一個字段中生成多種類型的ajax驗證,以支持在輸入字段的Ajax驗證中可能發生的所有可能情況......換句話說,我需要類似的東西:

public function getNewJqueryFunction(){ 
     return array ('AjaxValidation_'.$count=>'$.validator.addMethod("tel_format"+'.$count.', 
      function(value,element) { 
       //Ajax call of URL 
      }," ");' 
     ); 
    } 

或者類似的東西Esytek_Form_JqueryValidator_NotEmpty,可以在一個領域實現多個遠程方法,這樣我就可以使用JqueryValidator任何Ajax調用情況。

這樣,我的問題是「什麼是最好的方法,我怎麼能在jquery的代碼中做到這一點?」

回答

1

我懷疑是否支持2個遙控器。
但是,您可以在一個ajax調用中同時執行驗證,並在響應中返回自定義錯誤消息,如「用戶名已被佔用」或「電子郵件已被佔用」。

Documentation -
的響應被評估爲JSON並且必須是有效的元素爲真,並且可以是任何假的,未定義或爲空無效的元素,使用默認的消息; 或字符串,例如。 「該名稱已被使用,請嘗試使用peter123」作爲錯誤消息顯示。

+0

問題是我正在使用Zend,我正在做一個系統,可以驗證服務器端(通過PHP)和客戶端上的錯誤(通過Jquery驗證,由PHP類實時創建來自Zend的原始驗證器)。 在這種情況下,我想要做一個類,可以在一個字段中生成多種類型的ajax驗證,以支持在輸入字段的Ajax驗證中可能發生的所有可能情況...... –

+0

我會將您的答案作爲因爲經過一番認真的思考,我認爲你是對的。如果我製作了一個允許用戶爲一個字段進行多個AJAX調用的系統,那麼對於服務器來說,請求會更加重載,並且只需要一個url和發送給它的不同參數即可完成。 –

相關問題