Использование 2x удаленного метода плагина Jquery Validate для одного поля - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть форма, которая проверяется с помощью Плагин проверки Jquery , и мне нужен способ, как минимум, 2 проверки через Ajax в одном и том же поле ...

Пример: у меня есть поле с именем Логин, которое принимает имя пользователя или адрес электронной почты, и мне нужно проверить, является ли это существующим адресом электронной почты в базе данных или существующим именем пользователя в базе данных, возвращая различные сообщения и выполняя 2 разных URL-адреса длявыполните эти проверки.

Есть ли в любом случае вызов двух разных удаленных методов с разными сообщениями и URL-адресами, или я должен добавить 2 новых метода, основанных на синхронных вызовах AJAX?

EDIT

Хорошо, может быть, я должен сказать причину, по которой я хочу вызвать 2 различных удаленных метода или создать 2 синхронных вызова AJAX:

Проблема в том, что я использую Zend, и я делаюсистема, которая может проверять ошибки на стороне сервера (через PHP) и на стороне клиента (через Jquery Validate), создаваемая на лету PHP-классами, которые расширяются от исходного Validators of 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 , который может реализовать более одного удаленного метода в одном поле, поэтому я могу использовать этот JqueryValidator в любом случае вызова Ajax.

Таким образом, мой вопрос: «Каков наилучший подход и как я могу сделать это в коде jquery?»

1 Ответ

1 голос
/ 03 ноября 2011

Сомневаюсь, что поддерживаются 2 пульта.
Однако вы можете выполнить как проверку в одном вызове ajax, так и вернуть пользовательское сообщение об ошибке в ответе, например, «имя пользователя уже занято» или «электронная почта уже занята».

Документация -
Ответ оценивается как JSON и должен быть истинным для допустимых элементов, и может быть любым ложным, неопределенным или нулевым для недопустимых элементов, используя сообщение по умолчанию; или строка, например. «Это имя уже занято, вместо этого попробуйте peter123», чтобы отобразилось сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...