Zend framework zend表单在一个元素上调度一个验证器

Zend framework zend表单在一个元素上调度一个验证器,zend-framework,zend-form,zend-validate,Zend Framework,Zend Form,Zend Validate,可能吗 我已经编写了一个简单的验证器,它在表单提交时被触发。 我可以使用相同的验证器,但它必须在输入字段离开后立即触发 可能吗? 巴勃罗这是可能的,这里有一种方法 向表单元素添加Javascriptonblur事件 onblur调用将包含该字段及其值的ajax请求发送给ZF操作 该操作调用该元素上的验证器,或使用Zend_Form::isValidPartial检查填充的元素 返回指示有效/无效和可选错误消息的JSON响应 在ajax完成时,阅读JSON响应并更新HTML以反映验证结果 希望

可能吗

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

可能吗?
巴勃罗

这是可能的,这里有一种方法

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

希望有帮助。

这是工作示例的一部分:

后端:

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
              }
            }
          }
        });

看起来不错,我会去的。酷:)一路上都很棒!在这里也得到了帮助,