【问题标题】:jQuery Validate form check if date is specific dayjQuery验证表单检查日期是否为特定日期
【发布时间】:2017-06-27 11:21:54
【问题描述】:

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

我使用 jQuery 表单验证器插件。

这是我的日期格式验证器:

$.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
            },
        }

但它不起作用。请给个主意?

【问题讨论】:

    标签: jquery regex validation date


    【解决方案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',
        }
      });
    });
    <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>

    【讨论】:

    • 谢谢,但我需要以 dd/mm/yyyy 格式获取日期并测试 dd 是否在星期六
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多