使用数组中的值进行jQuery验证

时间:2012-03-27 02:03:42

标签: javascript jquery arrays validation jquery-validate

我有一个简单的表单,并希望添加自定义的jQuery验证规则。我希望文本字段(bonuscode)只有少数可能的值。我假设我需要一个这些值的数组,但不知道很多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 个答案:

答案 0 :(得分:1)

在javascript数组中获得奖金值不是一个好的解决方案。您可以向服务器发出ajax请求并检查奖励值。这是示例代码。

您可以使用验证插件中的远程选项来检查bounus

$("#form").validate({
  debug: false,
  rules: {
    bonuscode: {
      required: true,
      remote: {
        url: "check-bonus.php",
        type: "post",
        data: {
          bonuscode: function() {
            return $("#bonuscode").val();
          }
        }
      }
    }
  }
});

答案 1 :(得分:1)

假设这实际上是你的用例,@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/