Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用数组中的值进行jQuery验证_Javascript_Jquery_Arrays_Validation_Jquery Validate - Fatal编程技术网

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

Javascript 使用数组中的值进行jQuery验证,javascript,jquery,arrays,validation,jquery-validate,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("")

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

在javascript数组中具有额外值不是一个好的解决方案。您可以向服务器发出ajax请求并检查奖金值。下面是示例代码

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

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

假设这实际上是您的用例,那么说您应该在服务器端代码中检查此类内容可能是正确的。但是,您的自定义规则已经不远了:

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!",
        },
    });
});
jQuery.validator.addMethod(“等于”),函数(值、元素、参数){

返回此.optional(元素)| |$.inArray(值,参数)>=0;//为什么在javascript中包含值是一种不好的做法?你能告诉我check-bonus.php应该是什么样子吗?非常感谢你的帮助!现在就知道了。我的最终解决方案发布在OP中供其他人参考。谢谢。@dsol828:这是一种不好的做法,因为你网站的用户只能“查看源代码”并查看奖励代码。@dsol828请不要将解决方案(即)编辑到您的问题中。请回答您自己的问题。
$。inArray(value,param)>0
应为
$。inArray(value,param)>-1
请参见