jQuery验证表单检查日期是否为特定日期

时间:2017-06-27 11:21:54

标签: jquery regex validation date

我想检查日期值是否是星期日,但问题是我的日期是特定格式(日/月/日yyyy - > 27/06/2017)

我使用jQuery Form Validator插件。

这是日期格式的验证器:

$.validator.addMethod("myDateFormat", function(value, element) {
        var re = /^\d{2}\/\d{2}\/\d{4}$/;
        return (this.optional(element) && value=="") || re.test(value); });

而且,我的星期六测试验证器:

$.validator.addMethod("dateUsine", function(value, element) {
    var n = new Date(value);
    var w = n.getDay();
    console.log(w);
    return this.optional(element) || w == 6;
    });

最后,关于该领域的规则:

rules: {
            dateusine: {
                required: true,
                myDateFormat: true,
                dateUsine: true
            },
        }

但它不起作用。请问一个想法?

2 个答案:

答案 0 :(得分:1)

由于您的日期格式对Date()无效,请使用mm/dd/yyyy格式使其生效。



console.log(new Date('27/06/2017'));
console.log(new Date('06/27/2017'));




如果您希望从日期格式dd/mm/yyyy获取日期,请先将其转换为有效日期,例如

$.validator.addMethod("dateUsine", function(value, element) {
    var v = value.split('/'),
        n = new Date(parseInt(v[2]), parseInt(v[1])-1, parseInt(v[0])); // Date(year,month,date)
        w = n.getDay();
    console.log(w);
    return this.optional(element) || w == 6;
});

<强>代码段,

&#13;
&#13;
$(function() {
  $.validator.addMethod("dateUsine",function(value,element){
    var v = value.split('/'),
      n = new Date(parseInt(v[2]), parseInt(v[1])-1, parseInt(v[0])); // Date(year,month,date)
    w = n.getDay();
    //console.log(w,n,v);
    return this.optional(element) || w == 6;
  },'It is not Saturday');
  $.validator.setDefaults({
		submitHandler: function() {
			alert("submitted!");
		}
	});

  $('#frm').validate({
    rules: {
      dateinuse: {
        required: true,
        dateUsine: true
      }
    },
    messages: {
      required: 'Enter date',
    }
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.js"></script>

<form id="frm" action="">
  <input type="text" id="dateinuse" name="dateinuse" value="25/06/2017"/><br/>
  <input type="submit" value="Save" />
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你显然知道格式(虽然很奇怪但是无论如何)。 我会使用“/”作为分隔符将字符串拆分为数组。 数组中的第一项是日,第二项是月,第三项是年。

然后,您可以使用这3个值创建新的Date对象。 请注意,您需要从月中减去1 ...

var dtString = "27/06/2017",
    dtArr = dtString.split("/"),
    dt = new Date(dtArr[2], dtArr[1] - 1, dtArr[0]);