JavaScript 日期验证错误

标签 javascript jquery-ui

我复制并修改了一个 js 日期验证器 - 来自 ( http://www.javascriptkit.com/script/script2/validatedate.shtml )

我将它用作 jquery 模态表单的一部分,它不允许我超越第一个标准.. 即使该值是以 datepicker jquery UI 的形式放入的

function checkDate( d, n ){
        if ( d.val().length > 0 ) {
            var validformat = /^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
            if ( !validformat.test( d.value ) ) {
                d.addClass( "ui-state-error" );
                updateTips( n + " must be a valid date." );
                return false;
            } else { //Detailed check for valid date ranges
                var monthfield = d.value.split( "/" )[0]
                var dayfield = d.value.split( "/" )[1]
                var yearfield = d.value.split( "/" )[2]
                var dayobj = new Date( yearfield, monthfield-1, dayfield )
                if ( ( dayobj.getMonth()+1 != monthfield ) || ( dayobj.getDate() != dayfield ) || ( dayobj.getFullYear() != yearfield ) ) {
                    d.addClass( "ui-state-error" );
                    updateTips( "Invalid Day, Month, or Year range detected. Please correct and submit again." + n + " must be a valid date." );
                    return false;
                } 
            }
            return true;
        }
    }

当输入 12/25/2012 的值时,它返回...“通知日期必须是有效日期。” 来自 updateTips( n + "必须是有效日期。");线...

请帮忙...

最佳答案

我不确定d是什么。它是一个 DOM 节点吗?那么你就无法对其调用 .val() 。它是一个 jQuery 包装对象吗?然后访问其 .value 属性可能会导致 undefined,并且该值的字符串化与您的格式不匹配。

使用更多变量,例如

var value = d.val(); // to test length, regex and use in split
…
var parts = value.split("/"); // to get year, month and day part

关于JavaScript 日期验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964887/

相关文章:

javascript - 找出带有位置 : fixed element on iOS 8 的无缝滚动

javascript - 如何在 javascript 闭包中将 'this' 保留在类中

javascript - 如何从 Facebook 浏览器重定向到 Android 市场?

jquery - 增加工具提示的 z-index 参数

jquery - Trent Richardson 时间选择器和日期时间选择器的问题

javascript - 如何在jquery中设置翻转方向?

javascript - 重置表单字段时出错

jquery - 禁用 jQuery UI Datepicker 中除周日之外的所有周日

jquery - 为 jQuery UI 复选框自定义样式

jquery - 动态创建的可放置 div 不起作用