【问题标题】:jQuery validation using values in array使用数组中的值进行 jQuery 验证
【发布时间】:2012-04-10 13:32:50
【问题描述】:

我有一个简单的表单,想添加一个自定义的 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!",
        },
    });
});

【问题讨论】:

    标签: javascript jquery arrays validation jquery-validate


    【解决方案1】:

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

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

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

    【讨论】:

    • 为什么在 javascript 中包含值是不好的做法?你能告诉我 check-bonus.php 应该是什么样子吗?非常感谢您的帮助!
    • 现在知道了。我在 OP 中发布的最终解决方案供其他人参考。谢谢。
    • @dsol828:这是一种不好的做法,因为您网站的用户只能“查看源代码”并查看奖励代码。
    • @dsol828 请不要将解决方案(right here)编辑到您的问题中。请回答您自己的问题。
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多