0

那可能吗?

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

可能吗?巴勃罗

4

2 回答 2

1

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

  • onblur向表单元素添加 Javascript事件
  • onblur 调用将包含该字段及其值的 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 回答