плагин проверки jQuery - PullRequest
       5

плагин проверки jQuery

2 голосов
/ 26 августа 2010

Я действительно пытался не задавать этот вопрос. Я видел довольно много сообщений на SO об этом плагине, но они все еще не совсем поняли его для меня. Сейчас у меня есть новая форма регистрации учетной записи, и я пытаюсь написать собственный метод для проверки уникального имени пользователя. Я хотел бы думать, что следующее должно работать:

$.validator.addMethod(
        "uniqueUsername", 
        function(value, element) {
            $.post(
                "http://" + location.host + "/scripts/ajax/check_username.php",
                {
                    username: value
                },
                function(response) {
                    if(response == 'true') {
                        return true;
                    } else {
                        return false;
                    }
                }
            );
        },
        "This username is already taken."
    );

К сожалению, похоже, что плагин движется независимо от функции обратного вызова. Я нашел, что кто-то предлагает сделать что-то вроде следующего:

var result = false;
    $.validator.addMethod(
        "uniqueUsername", 
        function(value, element) {
            $.post(
                "http://" + location.host + "/scripts/ajax/check_username.php",
                {
                    username: value
                },
                function(response) {
                    if(response == 'true') {
                        result = true;
                    } else {
                        result = false;
                    }
                }
            );
            return result;
        },
        "This username is already taken."
    );

Но, похоже, есть задержка, поскольку она сохраняет значение, а затем при следующем событии будет установлено любое значение. Что вы, ребята, рекомендуете?

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Поскольку это асинхронная проверка, вокруг нее должно быть больше (вы не можете вернуть значение из функции, подобной этой, в вашем случае оно всегда будет ложным). Встроенный метод remote используется следующим образом:

$("form").validate({
  rules: {
    username: {
      remote: {
        url: "http://" + location.host + "/scripts/ajax/check_username.php",
        type: "post"
      }
    }
  }  
});

Это POST a username: valueofElement, поскольку правило относится к элементу с именем username. Ваш серверный скрипт должен вернуть true, если проверка прошла успешно, false в противном случае ... так что false, если имя пользователя уже занято.

Подробнее о опции remote можно прочитать здесь , в том числе о том, как при необходимости передавать дополнительные аргументы данных.

0 голосов
/ 20 августа 2014

код JS

username: {
        required: true,
        minlength: 5,
        remote: '/userExists'
       },

Php-код для проверки наличия и возврата сообщений

public function userExists()
{
    $user = User::all()->lists('username');
    if (in_array(Input::get('username'), $user)) {
        return Response::json(Input::get('username').' is already taken');
    } else {
        return Response::json(Input::get('username').' Username is available');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...