确保日期可以在过去添加

时间:2011-11-17 11:22:56

标签: javascript jquery datepicker

我可以对这段代码做些什么来确保它可以允许在过去和未来添加缺席?每当我尝试在过去添加任何内容时,似乎仍然想要给我一个错误,我不能在过去添加缺席。我甚至不确定如何编码以确保它可以,或删除哪一点。我知道有一些代码不允许我这样做,但我不知道哪个位和什么要删除。我不是非常熟练的JavaScript,但它在我的项目中,我不确定如何处理它。

dateValid: function () {
    var s = $(this).val();

    if ($(this).required()) {
        var date = new Date(s);

        if (!isNaN(date)) {
            if (date >= Date.parse(new Date().toDateString())) {
                $(this).removeClass("error");
                return true;
            }
            else {
                validation.showError("Past", $(this).attr("name"));
                $(this).addClass("error");
                return false;
            }
        }
        else {
            validation.showError("Invalid", $(this).attr("name"));
            $(this).addClass("error");
            return false;
        }
    }
    else return false;
},

dateRangeValid: function (toDate) {
    var s = $(this).val();

    if ($(this).required()) {
        if (toDate.required()) {
            var dateFrom = new Date(s);
            var dateTo = new Date(toDate.val());

            if (!isNaN(dateFrom) && !isNaN(dateTo)) {
                if (dateTo >= dateFrom) {
                    if (dateFrom >= Date.parse(new Date().toDateString())) {
                        $(this).removeClass("error");
                        toDate.removeClass("error");
                        return true;
                    }
                    else {
                        validation.showError("Past", "date");
                        $(this).addClass("error");
                        toDate.addClass("error");
                        return false;
                    }
                }
                else {
                    validation.showError("Invalid", "date");
                    $(this).addClass("error");
                    toDate.addClass("error");
                    return false;
                }
            }
            else {
                validation.showError("Invalid", "date");
                $(this).addClass("error");
                toDate.addClass("error");
                return false;
            }
        }
        else {
            validation.showError("Required", "dateTo");
            $(this).addClass("error");
            toDate.addClass("error");
            return false;
        }
    }
    else {
        validation.showError("Required", "dateFrom");
        $(this).addClass("error");
        toDate.addClass("error");
        return false;
    }
},

1 个答案:

答案 0 :(得分:0)

这是你的错误:

            if (dateTo >= dateFrom) {

                // This if statement checks if dateFrom is today or later!!
                if (dateFrom >= Date.parse(new Date().toDateString())) { 

                    $(this).removeClass("error");
                    toDate.removeClass("error");
                    return true;
                }
                else {
                    validation.showError("Past", "date");
                    $(this).addClass("error");
                    toDate.addClass("error");
                    return false;
                }
            }

替换为

            if (dateTo >= dateFrom) {
                $(this).removeClass("error");
                    toDate.removeClass("error");
                    return true;
            }

并且应该不再存在问题。