0

それは可能ですか?

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

出来ますか?パブロ

4

2 に答える 2

1

それは可能です、これはそれについて行く一つの方法です。

  • onblurフォーム要素にJavascriptイベントを追加します
  • onblur呼び出しは、その1つのフィールドとその値を含むajaxリクエストをZFアクションに送信します
  • アクションは、その要素のバリデーターを呼び出すZend_Form::isValidPartialか、入力された要素をチェックするために使用します
  • 有効/無効およびオプションのエラーメッセージを示すJSON応答を返します
  • ajaxが完了したら、JSON応答を読み取り、検証結果を反映するようにHTMLを更新します

お役に立てば幸いです。

于 2012-04-28T03:14:21.000 に答える
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
              }
            }
          }
        });
于 2012-04-28T11:40:52.443 に答える