Проверка JQuery с использованием значений в массиве - PullRequest
3 голосов
/ 27 марта 2012

У меня есть простая форма, и я хотел бы добавить пользовательское правило проверки jQuery.Я хотел бы, чтобы текстовое поле (бонус-код) имело только несколько возможных значений.Я предполагаю, что мне нужен массив этих значений, но я не очень разбираюсь в javascript, я не знаю, где я ошибаюсь.

jQuery.validator.addMethod("equals", function(value, element, param) {
    return this.optional(element) || value == param;
}, jQuery.format(""));

$(document).ready(function(){
    $("#form").validate({
        debug: false,
        rules: {
            bonuscode: {equals: ["code1", "code2"]}
        },
        messages: {
            bonuscode: "That's not a Bonus Code!",
        },
    });
});

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Предполагая, что это на самом деле ваш вариант использования, @ jems , вероятно, правильно сказать, что вы должны проверять подобные вещи в коде на стороне сервера. Однако ваше пользовательское правило не за горами:

jQuery.validator.addMethod("equals", function(value, element, param) {
    return this.optional(element) || $.inArray(value, param) >= 0; // <-- Check if the value is in the array.
}, jQuery.format(""));

$(document).ready(function() {
    $("#form").validate({
        debug: false,
        rules: {
            bonuscode: {
                equals: ["code1", "code2"]
            }
        },
        messages: {
            bonuscode: "That's not a Bonus Code!",
        },
    });
});

Пример: http://jsfiddle.net/AApJx/

1 голос
/ 27 марта 2012

Наличие значения бонуса в массиве javascript не является хорошим решением.Вы можете сделать запрос ajax на сервер и проверить значение бонуса.Вот пример кода.

Вы можете использовать удаленную опцию в плагине проверки для проверки подлинности

$("#form").validate({
  debug: false,
  rules: {
    bonuscode: {
      required: true,
      remote: {
        url: "check-bonus.php",
        type: "post",
        data: {
          bonuscode: function() {
            return $("#bonuscode").val();
          }
        }
      }
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...