【问题标题】:Using 2x remote method of Jquery Validate plugin for a single field对单个字段使用 Jquery Validate 插件的 2x 远程方法
【发布时间】:2011-11-03 12:37:29
【问题描述】:

我有一个正在使用 Jquery's Validation Plugin 进行验证的表单,我需要一种方法来通过 Ajax 在同一个字段上进行至少 2 次验证...

示例:我有一个名为 Login 的字段,它接受用户名或电子邮件,我需要验证它是数据库中的现有电子邮件还是数据库中的现有用户名,返回不同的消息并执行 2不同的 URL 来进行这些验证。

是否可以调用 2 个具有不同消息和 URL 的不同远程方法,或者我应该添加 2 个基于 AJAX 同步调用的新方法?

编辑

好吧,也许我应该说一下我为什么要调用2个不同的远程方法或创建2个AJAX同步调用的原因:

问题是我正在使用 Zend,我正在做一个可以验证服务器端(通过 PHP)和客户端(通过 Jquery Validate,由扩展自Zend 的原始验证器)。

示例

class Esytek_Form_JqueryValidator_NotEmpty extends Zend_Validate_NotEmpty implements Esytek_Form_JqueryValidator_Interface {

    public function elementSetOptions(Zend_Form_Element $element){
        $element->setRequired(true);
    }

    public function getJqueryCode(){
        return 'required: true,';
    }

    public function getJqueryMessage($mensagem){
        foreach ($this->_messageVariables as $ident => $property) {
            $mensagem = str_replace("%$ident%", (string) $this->$property, $mensagem);
        }
        return 'required: "<br>'.$mensagem.'",';
    }

    public function getNewJqueryFunction(){
        return null;
    }

    ...
}

Esytek_Form_JqueryValidator_Interface

interface Esytek_Form_JqueryValidator_Interface extends Zend_Validate_Interface{

    public function elementSetOptions(Zend_Form_Element $element);

    public function getJqueryCode();

    public function getJqueryMessage($mensagem);

    public function getNewJqueryFunction();
}

还有另一个类太大了,但简而言之,它所做的只是调用每个 Jquery Validator 的方法,将所有 Jquery 代码聚合到一个字符串中,然后在表单中,我们应该调用一个方法编写运行验证的 jquery 代码。

在这种情况下,我想做一个类,它可以在一个字段中生成多种类型的 ajax 验证,以支持输入字段的 Ajax 验证中可能发生的所有可能情况......换句话说,我需要类似的东西:

    public function getNewJqueryFunction(){
        return array ('AjaxValidation_'.$count=>'$.validator.addMethod("tel_format"+'.$count.',
            function(value,element) {
                //Ajax call of URL
            }," ");'
        );
    }

或类似 Esytek_Form_JqueryValidator_NotEmpty 的东西可以在一个字段中实现多个 remote 方法,因此我可以在任何 Ajax 调用案例中使用该 JqueryValidator。

这样,我的问题是“什么是最好的方法,我怎样才能在 jquery 的代码中做到这一点?”

【问题讨论】:

    标签: validation jquery jquery-validate


    【解决方案1】:

    我怀疑是否支持 2 个遥控器。
    但是,您可以在一个 ajax 调用中进行验证并在响应中返回自定义错误消息,如“用户名已被占用”或“电子邮件已被占用”。

    Documentation -
    响应被评估为 JSON,对于有效元素必须为 true,对于无效元素可以为任何 false、未定义或 null,使用默认消息; 或字符串,例如。 “该名称已被占用,请尝试 peter123”以显示为错误消息。

    【讨论】:

    • 问题是我正在使用 Zend,我正在做一个可以验证服务器端(通过 PHP)和客户端(通过 Jquery Validate,由 PHP 动态创建)的错误的系统从 Zend 的原始验证器扩展而来的类)。在这种情况下,我想做一个类,它可以在一个字段中生成多种类型的 ajax 验证,以支持输入字段的 Ajax 验证中可能发生的所有可能情况......
    • 我会将您的回答视为已接受,因为经过认真思考后,我认为您是对的。如果我做了一个允许用户对一个字段进行多个 AJAX 调用的系统,那么服务器的请求会更加过载,并且可以只使用一个 url 和发送给它的不同参数来完成。
    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多