2012-04-28 7 views
0

ディスパッチできますか?zend form validator onblurと要素を

フォームが送信されたときにトリガーされる単純なバリデーターはすでに書いてあります。 同じバリデータを使用することはできますが、入力フィールドを残した直後にトリガする必要があります。

は可能ですか? pablo

答えて

1

ここでは、これについて説明します。

  • フォーム要素
  • のonblurコールは、一つのフィールドとZFアクション
  • アクションにその値がその要素、または使用上のバリデータを呼び出すことを含むAJAXリクエストを送信するためにJavaScript onblurイベントを追加Zend_Form::isValidPartial検証
  • 0の結果を反映するようにJSON応答および更新HTMLを読み、人口素子
  • 戻るAJAX完全に有効/無効および任意のエラーメッセージ
  • を示すJSONレスポンスをチェックします

希望するものがあります。

+0

は偉大に見えますが、私はできるでしょうその上に。クール:) – user968865

+0

+1、これは正しいワークフローです、私は基本的な例を入れました –

+0

それにすべての道に偉大だった!ここでも助けられました。http://mnshankar.wordpress.com/2010/05/30/using-ajax-jquery-to-validate-a-zend-form/ – user968865

1

これは、実施例の一部です:

バックエンド:

class UserController extends Zend_Controller_Action 
{ 
    /* ... */ 
    public function validateAction() 
    { 
     if ($this->_request->isXmlHttpRequest()) { 
      $values = $this->_request->getParam('values'); 
      $form = new Form_User(); 
      $isValid = true; 

      if (!$form->isValidPartial($values)) { 
       $isValid = $form->getMessages(); 
      } 

      $this->_helper->json(array('errors' => $isValid)); 
     } 
    } 

    /* ... */ 
} 

フロントエンド、(単にAJAX呼び出しの一部)は、イベントに添付する必要があります。

$.ajax({ 
      type: "POST", 
      url: "/user/validate/", 
      data: { 
      'values': $('#my-form-id').serialize() 
      }, 
      dataType: "json", 
      beforeSend:function(){ 

      }, 
      success: function(response){ 
      var result = response.errors; 

      if (result == true) { 
       // given fields are valid 
       // do some extra stuff here 
      } else { 
       // invalid 
       // do some extra stuff here 
       } 
      } 
      } 
     });