首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .validate -在Internet中验证日期

jQuery .validate -在Internet中验证日期
EN

Stack Overflow用户
提问于 2017-08-30 23:47:51
回答 2查看 1K关注 0票数 1

我已经了解到IE在使用jQuery验证插件(https://jqueryvalidation.org/)验证日期时遇到了一些问题。

我的规则是starttime: {required: true, date: true},但我的格式是DD-MMM-YYYY hh:mm a,也就是2017年8月31日上午9:43。

这在其他浏览器中是可行的,但是IE说这是一个无效的日期。注意,验证正在处理其他字段。

这里有一些很好的答案:Custom date format with jQuery validation plugin,但具体来说,我如何在IE中验证我的日期格式?

我的猜测是,我需要添加一个自定义方法,但是其中应该包含什么呢?RegEx还是一个定制的约会,怎么做?我同意RegEx验证日期的格式,而不验证日期本身(例如。因为这个页面使用数据报警器,用户不能直接输入数据。

编辑(包括实际代码):

代码语言:javascript
复制
<script type="text/javascript" src="js/plugins/jquery-validate/jquery.validate.min.js"></script>

<script>
    $(document).ready(function(){

        if ($("#newinspectionform").length > 0) {
            var validate = $("#newinspectionform").validate({
                errorClass: "has-error",
                validClass: "",
                errorElement: "span",
                ignore: [],
                errorPlacement: function (error, element) {
                    $(element).after(error);
                    $(element).parents(".form-group").addClass("has-error");
                },
                highlight: function (element, errorClass) {
                    $(element).parents(".form-group").removeClass("has-success").addClass(errorClass);
                },
                unhighlight: function (element, errorClass, validClass) {
                    $(element).parents(".form-group").removeClass(errorClass).addClass(validClass);
                },
                rules: {
                    propertyid: {required: true},
                    type: {required: true},
                    starttime: {required: true, date: true},
                    endtime: {required: true, date: true}
                }
            });
        }

    ... other stuff
</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-01 01:38:16

我用自定义日期方法修正了这个问题。我需要这样做,因为我的格式需要保持为DD-MMM-YYYY hh:mm a格式,即在2017年8月31日上午9:43。

代码语言:javascript
复制
    $.validator.addMethod(
        "inspDateTime",
        function(value, element) {
            // put your own logic here, this is just a (crappy) example
            return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2]|[a-zA-Z]{3})[/., -](19|20)?\d{2} (0?[1-9][012]?:[0-5][0-9] [ap]m)$/);
        },
        "Please enter a valid date."
    );

我不知道为什么不能验证这个日期,但是上面的正则表达式在IE中有效。请将这个答案归功于起始正则表达式:https://stackoverflow.com/a/17392795/2066625

票数 0
EN

Stack Overflow用户

发布于 2017-08-31 00:38:27

编辑:包括数据采集器

尝尝这个。它在IE中与datePicker一起工作。你也想定时间吗?如果是这样的话,我知道有些人已经为datetimePicker创建了一个插件。

代码语言:javascript
复制
<!doctype html>
<html>
<head>
</head>
<body>
    <form>
        <input type="date" class="left" id="starttime" name="starttime">
        <br/>
        <input type="submit" value="Validate!">
    </form>
</body>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
   //datePicker Set format
   $('#starttime').datepicker({ 
      dateFormat: 'yy-mm-dd'
   }).datepicker("setDate", new Date());


   var validator = $("form").validate ({
       rules: {
            starttime: {required: true, date: true}
      },
       messages: {
            starttime: "Please enter a valid start date"
       }
    });
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45971262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档