【问题标题】:jQuery Validation Adding A Rule [duplicate]jQuery验证添加规则[重复]
【发布时间】:2015-02-08 13:06:41
【问题描述】:

我对 jQuery Validation 非常陌生,请有人纠正我在尝试添加的规则中出错的地方。

<script>
     $("#form").validate({
         focusInvalid: false,
    rules: {
        ownership: {
            required: true
        },
        vin: {
            required: true,
            validateVin: true
        },
        // Same for other fields
    },
    messages: {
        ownership: "This field is required.",
        vin: "Invalid VIN",
        // Repeat for other fields
    }
});

// create your custom rule
jQuery.validator.addMethod(validateVin(this.value, Number($("#vehicleyear").val()))) {
    function validateVin(vin, date) {
        var re;
        if (date >= 1981) {
            re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$");
        } else if (date < 1981) {
            re = new RegExp("^[A-Z\\d]{2,17}$");
        } else {
        }
        return vin.match(re);
    }, 'Please enter valid VIN.'});
</script>

这应该检查两个字段,首先检查选择vehicleyear 的年份,然后根据年份检查输入vin 以查看正则表达式是否匹配。如果它不正确匹配,那么它应该说无效 vin。

当我运行我的时,它甚至不使用正则表达式,但我不知道为什么。对此的任何帮助将不胜感激!

【问题讨论】:

  • 检查你的控制台(chrome - f12 - console)你可能有一些错误。

标签: javascript jquery jquery-validate


【解决方案1】:

addMethod 函数接受两个输入,第一个是您要添加的规则的名称。二是函数本身,不需要命名。 以下代码应该可以满足您的期望。 唯一需要注意的是如何设置日期变量。 有关更多示例,请参阅此页面。 jQuery Validator addMethod()

jQuery.validator.addMethod("validateVin", function(vin) {
  var date = Number($("#vehicleyear").val());
  var re;
  if (date >= 1981) {
    re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$");
  } else if (date < 1981) {
    re = new RegExp("^[A-Z\\d]{2,17}$");
  } else {}
  return vin.match(re);
}, 'Please enter valid VIN.');

【讨论】:

  • 请不要在没有足够代码运行的情况下使用代码 sn-p 功能。谢谢。
  • 实际上,.addMethod() 方法接受第三个输入...第三个是可选的,它是自定义消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2016-02-07
相关资源
最近更新 更多