Использование 2-кратного удаленного метода плагина проверки Jquery для одного поля

#validation #jquery #jquery-validate

#проверка #jquery #jquery-проверка

Вопрос:

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

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

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

Редактировать

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

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

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

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

Комментарии:

1. Проблема в том, что я использую Zend, и я создаю систему, которая может проверять ошибки на стороне сервера (через PHP) и на стороне клиента (через Jquery Validate, созданный на лету классами PHP, который расширяется от исходных валидаторов Zend). В этом контексте я хочу создать класс, который мог бы генерировать более одного типа проверки ajax в одном поле для поддержки всех возможных случаев, которые могут произойти при проверке Ajax для поля ввода…

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