[jquery] 종료 날짜가 jQuery를 사용하여 시작 날짜보다 큰지 확인하십시오.

종료 날짜 [텍스트 상자]가 시작 날짜 [텍스트 상자]보다 큰지 jQuery에서 어떻게 확인 / 확인합니까?



답변

융합을 확장하는 것뿐입니다. 이 확장 방법은 jQuery 유효성 검사 플러그인을 사용하여 작동합니다. 날짜와 숫자를 확인합니다.

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())
        || (Number(value) > Number($(params).val()));
},'Must be greater than {0}.');

그것을 사용하려면 :

$("#EndDate").rules('add', { greaterThan: "#StartDate" });

또는

$("form").validate({
    rules: {
        EndDate: { greaterThan: "#StartDate" }
    }
});


답변

var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());

if (startDate < endDate){
// Do something
}

그렇게해야한다고 생각합니다


답변

파티에 조금 늦었지만 여기는 내 부분

Date.parse(fromDate) > Date.parse(toDate)

세부 사항은 다음과 같습니다.

var from = $("#from").val();
var to = $("#to").val();

if(Date.parse(from) > Date.parse(to)){
   alert("Invalid Date Range");
}
else{
   alert("Valid date Range");
}


답변

jquery.validate.js 및 jquery-1.2.6.js를 참조하십시오. 시작일 텍스트 상자에 startDate 클래스를 추가합니다. 종료 날짜 텍스트 상자에 endDate 클래스를 추가합니다.

이 스크립트 블록을 페이지에 추가하십시오.

<script type="text/javascript">
    $(document).ready(function() {
        $.validator.addMethod("endDate", function(value, element) {
            var startDate = $('.startDate').val();
            return Date.parse(startDate) <= Date.parse(value) || value == "";
        }, "* End date must be after start date");
        $('#formId').validate();
    });
</script>

도움이 되었기를 바랍니다 🙂


답변

나는 danteuno의 대답을 땜질하고 있었고 , 의도는 좋지만 슬프게도 IE 가 아닌 여러 브라우저에서 깨졌습니다 . IE는 Date생성자에 대한 인수로 받아들이는 것에 대해 상당히 엄격 하지만 다른 것들은 그렇지 않기 때문입니다. 예를 들어 Chrome 18은

> new Date("66")
  Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)

이로 인해 코드가 “날짜 비교”경로를 취하고 모든 것이 거기에서 내리막 길로 이동합니다 (예 : new Date("11")보다 크며 new Date("66")원하는 효과의 반대 임).

따라서 고려한 후 “날짜”경로보다 “숫자”경로에 우선 순위를 부여하도록 코드를 수정하고 JavaScript-IsNumeric ()에서 10 진수 유효성 검사에 제공된 우수한 방법을 사용하여 입력이 실제로 숫자인지 확인했습니다 .

결국 코드는 다음과 같습니다.

$.validator.addMethod(
    "greaterThan",
    function(value, element, params) {
        var target = $(params).val();
        var isValueNumeric = !isNaN(parseFloat(value)) && isFinite(value);
        var isTargetNumeric = !isNaN(parseFloat(target)) && isFinite(target);
        if (isValueNumeric && isTargetNumeric) {
            return Number(value) > Number(target);
        }

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

        return false;
    },
    'Must be greater than {0}.');


답변

텍스트 필드의 날짜 값은 다음과 같은 jquery의 .val () 메서드로 가져올 수 있습니다.

var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();

비교하기 전에 날짜 문자열을 구문 분석하는 것이 좋습니다. Javascript의 Date 객체에는 parse ()-Method가 있지만 미국 날짜 형식 (YYYY / MM / DD) 만 지원합니다. 유닉스 시대가 시작된 이후의 밀리 초를 반환하므로 값을> 또는 <와 간단히 비교할 수 있습니다.

다른 형식 (예 : ISO 8661)을 원하면 정규식이나 무료 date.js 라이브러리를 사용해야합니다.

슈퍼 유저를 좋아한다면 텍스트 필드 대신 jquery ui datepickers를 사용할 수 있습니다. 날짜 범위를 입력 할 수있는 datepicker 변형이 있습니다.

http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/


답변

따라서이 규칙은 선택 사항이 필요했고 위의 제안 중 어느 것도 선택 사항이 아닙니다. 메서드를 호출하면 값이 필요하도록 설정하더라도 필요에 따라 표시됩니다.

이것은 내 부름입니다.

  $("#my_form").validate({
    rules: {
      "end_date": {
        required: function(element) {return ($("#end_date").val()!="");},
        greaterStart: "#start_date"
      }
    }
  });//validate()

My addMethod는 Mike E.의 최고 등급 답변만큼 강력하지는 않지만 JqueryUI datepicker를 사용하여 날짜 선택을 강제하고 있습니다. 누군가가 날짜가 숫자인지 확인하고 방법이 선택 사항이되도록하는 방법을 말해 줄 수 있다면이 방법은 나에게 적합합니다.

jQuery.validator.addMethod("greaterStart", function (value, element, params) {
    return this.optional(element) || new Date(value) >= new Date($(params).val());
},'Must be greater than start date.');