복붙노트

[JQUERY] 종료 날짜는 jQuery로 시작 날짜보다 큰 유효성 것을

JQUERY

종료 날짜는 jQuery로 시작 날짜보다 큰 유효성 것을

해결법


  1. 1.그냥 융합 응답 떨어져 확대. 이 확장 방법은 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" }
        }
    });
    

  2. 2.

    var startDate = new Date($('#startDate').val());
    var endDate = new Date($('#endDate').val());
    
    if (startDate < endDate){
    // Do something
    }
    

    그게 내가 생각을해야한다


  3. 3.조금 늦게 파티에 있지만 여기 내 부분이다

    조금 늦게 파티에 있지만 여기 내 부분이다

    여기에 세부 사항은 다음과 같습니다

    var from = $("#from").val();
    var to = $("#to").val();
    
    if(Date.parse(from) > Date.parse(to)){
       alert("Invalid Date Range");
    }
    else{
       alert("Valid date Range");
    }
    

  4. 4.참조 jquery.validate.js 및 JQuery와-1.2.6.js. 시작일 텍스트 상자에 startDate를 클래스를 추가합니다. 종료일 텍스트 상자에 endDate가 클래스를 추가합니다.

    참조 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>
    

    도움이 되었기를 바랍니다 :-)


  5. 5.난 그냥 danteuno의 대답 땜질하고 좋은 의도 동안, 슬프게도이 IE를하지 않은 여러 브라우저에 생겼 것을 알 수 있었다. IE는이 날짜 생성자에 인수로 받아들이는 것에 대해 매우 엄격하기 때문입니다, 그러나 다른 사람은하지 않습니다. 예를 들어, 크롬 18 제공

    난 그냥 danteuno의 대답 땜질하고 좋은 의도 동안, 슬프게도이 IE를하지 않은 여러 브라우저에 생겼 것을 알 수 있었다. IE는이 날짜 생성자에 인수로 받아들이는 것에 대해 매우 엄격하기 때문입니다, 그러나 다른 사람은하지 않습니다. 예를 들어, 크롬 18 제공

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

    이것은 "비교 날짜"경로를 취할 수있는 코드를 발생시키고 모든 것이 거기에서 내리막 길을 간다 (예를 들어, 새로운 날짜 ( "11") 새로운 날짜보다 큰 경우 ( "66")이 분명 원하는 효과의 반대입니다).

    따라서 고려 후 나는 입력이 실제로 자바 스크립트로 검증 십진수에서 제공하는 우수한 방법으로 숫자라는 "날짜"경로 및 유효성 검사를 통해 "번호"경로에 우선 순위를 부여하는 코드를 수정 - ISNUMERIC을 ().

    결국, 코드가된다 :

    $.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}.');
    

  6. 6.텍스트 필드에서 날짜 값은 같은 jQuery의 .val () 메소드로 가져올 수 있습니다

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

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

    나는 강하게을 비교하기 전에 날짜 문자열을 구문 분석하는 것이 좋습니다 것입니다. 자바 스크립트의 Date 객체는 구문 분석 ()가 - 방법,하지만 그것은 단지 미국의 날짜 형식 (YYYY / MM / DD)를 지원합니다. 당신은 단순히 <로 값을 비교> 또는 수 그것은 유닉스 시대의 시작부터 밀리 초를 반환합니다.

    당신이 다른 형식 (8661 예를 들어, ISO)을하려는 경우, 당신은 정규 표현식 또는 무료 date.js 라이브러리에 의존해야합니다.

    당신은 슈퍼 사용자 친화적 싶은 경우에, 당신은 대신 텍스트 필드의 JQuery와 UI 날짜 선택기를 사용할 수 있습니다. 날짜 범위를 입력 할 수있는 날짜 선택기의 변형이 있습니다 :

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


  7. 7.나는이 규칙이 필요 그래서 선택하고 위의 제안 중 어느 것도 선택 사항 없습니다. I는 I 값이 필요로 설정 한 경우에도 필요에 따라 화면이 표시되는 방법을 호출하는 경우.

    나는이 규칙이 필요 그래서 선택하고 위의 제안 중 어느 것도 선택 사항 없습니다. I는 I 값이 필요로 설정 한 경우에도 필요에 따라 화면이 표시되는 방법을 호출하는 경우.

    이것은 내 전화입니다 :

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

    내 addMethod 마이크 E.의 최고 등급의 답변으로 견고하지 않습니다,하지만 난 날짜 선택을 강제로 JqueryUI의 날짜 선택기를 사용하고 있습니다. 누군가가 방법을 잘 날짜 숫자가 만드는 말해 및 가질 수 있다면 방법은 좋은 것이 선택 될 수 있지만 지금이 방법은 나를 위해 작동합니다 :

    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.');
    

  8. 8.에서 자바 스크립트 / JQuery와에서 및 날짜 형식으로 변환하지 않고, 문자열 날짜 비교하는 것은 개발자가 사용하는 대부분의. 일로부터 비교하는 가장 간단한 방법은 날짜가에보다 큰 것입니다.

    에서 자바 스크립트 / JQuery와에서 및 날짜 형식으로 변환하지 않고, 문자열 날짜 비교하는 것은 개발자가 사용하는 대부분의. 일로부터 비교하는 가장 간단한 방법은 날짜가에보다 큰 것입니다.

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

    항상 정확한 결과를 얻을 수 비교하기 전에에서 현재까지 분석


  9. 9.내가 사용하고 무엇 때문에 무엇처럼 프란츠는 말했다 : P

    내가 사용하고 무엇 때문에 무엇처럼 프란츠는 말했다 : P

    var date_ini = new Date($('#id_date_ini').val()).getTime();
    var date_end = new Date($('#id_date_end').val()).getTime();
    if (isNaN(date_ini)) {
    // error date_ini;
    }
    if (isNaN(date_end)) {
    // error date_end;
    }
    if (date_ini > date_end) {
    // do something;
    }
    

  10. 10.

    $(document).ready(function(){
       $("#txtFromDate").datepicker({
            minDate: 0,
            maxDate: "+60D",
            numberOfMonths: 2,
            onSelect: function(selected) {
              $("#txtToDate").datepicker("option","minDate", selected)
            }
        });
    
        $("#txtToDate").datepicker({
            minDate: 0,
            maxDate:"+60D",
            numberOfMonths: 2,
            onSelect: function(selected) {
               $("#txtFromDate").datepicker("option","maxDate", selected)
            }
        });
    });
    

    이 링크 또는 방문


  11. 11.

    jQuery('#from_date').on('change', function(){
        var date = $(this).val();
        jQuery('#to_date').datetimepicker({minDate: date});  
    });
    

  12. 12.

    function endDate(){
        $.validator.addMethod("endDate", function(value, element) {
          var params = '.startDate';
            if($(element).parent().parent().find(params).val()!=''){
               if (!/Invalid|NaN/.test(new Date(value))) {
                   return new Date(value) > new Date($(element).parent().parent().find(params).val());
                }
           return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) > parseFloat($(element).parent().parent().find(params).val())) || value == "";              
          }else{
            return true;
          }
          },jQuery.format('must be greater than start date'));
    
    }
    
    function startDate(){
                $.validator.addMethod("startDate", function(value, element) {
                var params = '.endDate';
                if($(element).parent().parent().parent().find(params).val()!=''){
                     if (!/Invalid|NaN/.test(new Date(value))) {
                      return new Date(value) < new Date($(element).parent().parent().parent().find(params).val());
                }
               return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) < parseFloat($(element).parent().parent().find(params).val())) || value == "";
                     }
                            else{
                         return true;
    }
    
        }, jQuery.format('must be less than end date'));
    }
    

    이 의지의 도움을 희망 :)


  13. 13.먼저 분할 기능을 사용하여 두 개의 입력 상자의 값을 분할합니다. 역순으로 동일 CONCAT. CONCAT 후 국가는 정수로 구문 분석합니다. 다음 if 문에서 두 값을 비교한다. eg.1> 20-11-2018 2> 21-11-2018

    먼저 분할 기능을 사용하여 두 개의 입력 상자의 값을 분할합니다. 역순으로 동일 CONCAT. CONCAT 후 국가는 정수로 구문 분석합니다. 다음 if 문에서 두 값을 비교한다. eg.1> 20-11-2018 2> 21-11-2018

    그 후 비교 및 ​​20,181,120 20,181,121 대한 분할 및 CONCAT 새로운 값 후 동일한 비교.

    var date1 = $('#datevalue1').val();
    var date2 = $('#datevalue2').val();
    var d1 = date1.split("-");
    var d2 = date2.split("-");
    
    d1 = d1[2].concat(d1[1], d1[0]);
    d2 = d2[2].concat(d2[1], d2[0]);
    
    if (parseInt(d1) > parseInt(d2)) {
    
        $('#fromdatepicker').val('');
    } else {
    
    }
    

  14. 14.이 작업을해야합니다

    이 작업을해야합니다

    $ .validator.addMethod ( "endDate가"기능 (값, 요소) { VAR의 startDate = $ ( '#의 date_open') 발 ().; 다음 Date.parse 창 (의 startDate) <= 다음 Date.parse (값) || 값 == ""; }) "* 종료 날짜가 시작 날짜 이후 여야합니다";


  15. 15.형식이 올바른 YYYY / MM / DD 보장과 두 필드 사이의 정확히 같은 경우 당신은 사용할 수 있습니다 :

    형식이 올바른 YYYY / MM / DD 보장과 두 필드 사이의 정확히 같은 경우 당신은 사용할 수 있습니다 :

    if (startdate > enddate) {
       alert('error'
    }
    

    문자열 비교

  16. from https://stackoverflow.com/questions/833997/validate-that-end-date-is-greater-than-start-date-with-jquery by cc-by-sa and MIT license