Дата окончания больше даты начала с мм / гггг? JQuery валидатор - PullRequest
1 голос
/ 03 февраля 2012

я видел этот пример: Подтвердите, что дата окончания больше, чем дата начала, с помощью jQuery

Говоря о проверке даты окончания больше, чем начало, формат даты для моего ввода всегда мм / гггг, поэтому для меня это не работает, если: дата начала> 122000 дата окончания> 012002

Я думаю, что мне нужно разделить дату, чтобы просто проверить гггг, если оно больше или нет, но я не знал, как его решить ... вот мой код не 7 символов в моем вводе, чтобы не пройти форму отправки:

HTML

<input type="text" id="starddate" />
<input type="text" id="enddate" />
<div id="msg"></div>
<input type="submit" id="submit" />

JS

jQuery.validator.addMethod("greaterThan", 
function(value, element, params) {

    if (!/Invalid|NaN/.test(new Date(value))) {
        return new Date(value) > new Date($(params).val());
    }

    return isNaN(value) && isNaN($(params).val()) 
        || (parseFloat(value) > parseFloat($(params).val())); 
},'Must be greater than {0}.');

$("#enddate").rules('add', { greaterThan: "#startdate" });

1 Ответ

2 голосов
/ 03 февраля 2012

Если ваши значения даты являются строками в форме mm/yyyy, вы не можете использовать new Date(value) для создания для них Date объекта & mdash; это не тот формат, в котором конструктор Date задокументирован как принимающий (и до недавнего времени не было документировано вообще ничего принимать, кроме того, каким был вывод toString, что также Реализация решать).

Но проблема не сложная: данные dateA и dateB являются строками в этом формате:

// Assumes the format mm/yyyy (not mmyyyy, which your example values seem to be in)
var compareA, compareB;
compareA = dateA.substring(3) + dateA.substring(0, 2);
compareB = dateB.substring(3) + dateB.substring(0, 2);
if (compareA > compareB) {
    // The date represented by `dateA` is later than the date
    // represented by `dateB`
}

или менее ясно

if (dateA.substring(3) + dateA.substring(0, 2) > dateB.substring(3) + dateB.substring(0, 2)) {
    // ...
}

Например, вы можете просто сравнивать строки, если вы перемещаете год перед месяцем, потому что строка "200012" равна < строка "200201".

...