我想检查日期值是否是星期日,但问题是我的日期是特定格式(日/月/日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
},
}
但它不起作用。请问一个想法?
答案 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;
});
<强>代码段,强>
$(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;
答案 1 :(得分:0)
你显然知道格式(虽然很奇怪但是无论如何)。 我会使用“/”作为分隔符将字符串拆分为数组。 数组中的第一项是日,第二项是月,第三项是年。
然后,您可以使用这3个值创建新的Date对象。 请注意,您需要从月中减去1 ...
var dtString = "27/06/2017",
dtArr = dtString.split("/"),
dt = new Date(dtArr[2], dtArr[1] - 1, dtArr[0]);