zend表单发送一个验证器onblur元素

时间:2012-04-28 01:03:04

标签: zend-framework zend-form zend-validate

这可能吗?

我已经编写了一个在提交表单时触发的简单验证器。 我可以使用相同的验证器,但必须在输入字段离开后立即触发。

有可能吗? 巴勃罗

2 个答案:

答案 0 :(得分:1)

这是可能的,这是一种方法。

  • 将Javascript onblur事件添加到表单元素
  • onblur调用发送一个包含该字段及其值的ajax请求到ZF操作
  • 该操作会调用该元素上的验证程序,或使用Zend_Form::isValidPartial检查填充的元素
  • 返回指示有效/无效和可选错误消息的JSON响应
  • 在ajax完成后,阅读JSON响应并更新HTML以反映验证结果

希望有所帮助。

答案 1 :(得分: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
              }
            }
          }
        });