복붙노트

[JQUERY] jQuery를 DatePicker에서 onchange를 이벤트 문제

JQUERY

jQuery를 DatePicker에서 onchange를 이벤트 문제

해결법


  1. 1.당신은 날짜 선택기의 onSelect를 이벤트를 사용할 수 있습니다.

    당신은 날짜 선택기의 onSelect를 이벤트를 사용할 수 있습니다.

    $(".date").datepicker({
        onSelect: function(dateText) {
            console.log("Selected date: " + dateText + "; input's current value: " + this.value);
        }
    });
    

    라이브 예 :

    $ ( ". 날짜") .날짜 선택기({ onSelect를 : 함수 (dateText) { 을 console.log ( "선택한 날짜 :"+ dateText + ", 입력의 현재 값 :"+ this.value); } }) CSTE 연구진 ( "변경"기능 () { ( "필드에서 가져온 변경 이벤트")를 CONSOLE.LOG; }); <링크 HREF = "http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css"REL = "스타일"/> <스크립트 SRC = "http://code.jquery.com/jquery-1.8.3.min.js"> <스크립트 SRC = "http://code.jquery.com/ui/1.9.2/jquery-ui.js">

    불행하게도, onSelect를 화재는 날짜가 변경되지 않은 경우에도, 선택 될 때마다. 항상 (아무것도 변경하지 않는 경우에도) onSelect를를 발생하고, 변화에 대한 기본이되는 입력에 어떤 이벤트가 발생하지 않습니다 :이 날짜 선택기의 설계 결함이다. (우리가 변화를 듣고, 그 예제의 코드를 보이지만 경우에 그들이가 발생되지 않습니다.) 그것은 아마도 입력에 이벤트를 발생시기를 가지 변화 (아마도 보통의 변경 이벤트, 또는 아마도 날짜 선택기 - 특정 일).

    당신이 좋아하는 경우에, 물론, 당신은 입력 화재에 변경 이벤트를 만들 수 있습니다 :

    $(".date").datepicker({
        onSelect: function() {
            $(this).change();
        }
    });
    

    임의 핸들러 inputfor 기본에 그 의지를 불 변화는 jQuery를 통해 연결시켜 줬습니다. 그러나 다시, 그것은 항상 그것을 발생합니다. 당신이 진정한 변화 만 불을하려는 경우, 당신은 (아마도 데이터를 통해) 이전 값을 저장하고 비교해야합니다.

    라이브 예 :

    $ ( ". 날짜") .날짜 선택기({ onSelect를 : 함수 (dateText) { 을 console.log ( "선택한 날짜 :"+ dateText + ", 입력의 현재 값 :"+ this.value); $ (이) .change (); } }) CSTE 연구진 ( "변경"기능 () { ( "필드에서 가져온 변경 이벤트")를 CONSOLE.LOG; }); <링크 HREF = "http://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css"REL = "스타일"/> <스크립트 SRC = "http://code.jquery.com/jquery-1.8.3.min.js"> <스크립트 SRC = "http://code.jquery.com/ui/1.9.2/jquery-ui.js">


  2. 2.T.J. 크라우의 대답은 (https://stackoverflow.com/a/6471992/481154) 매우 좋은이며, 아직 정확한 남아있다. 당신이받을거야으로 onSelect를 함수 내에서 변경 이벤트를 트리거링 가까이입니다.

    T.J. 크라우의 대답은 (https://stackoverflow.com/a/6471992/481154) 매우 좋은이며, 아직 정확한 남아있다. 당신이받을거야으로 onSelect를 함수 내에서 변경 이벤트를 트리거링 가까이입니다.

    그러나이 조건 값 (들)을 직접 저장하지 않고 단지 실제 변경에 대한 변경 이벤트를 트리거 할 수 있도록 할 날짜 선택기 개체 (lastVal)에 좋은 특성이있다 :

    $('#dateInput').datepicker({
         onSelect: function(d,i){
              if(d !== i.lastVal){
                  $(this).change();
              }
         }
    });
    

    그럼 그냥 정상처럼 변경 이벤트를 처리 :

    $('#dateInput').change(function(){
         //Change code!
    });
    

  3. 3.귀하의 날짜 선택기 개체의 onSelect를 이벤트를 찾고 :

    귀하의 날짜 선택기 개체의 onSelect를 이벤트를 찾고 :

    $('.selector').datepicker({
       onSelect: function(dateText, inst) { ... }
    });

  4. 4.

    $('#inputfield').change(function() { 
        dosomething();
    });
    

  5. 5.나는 날짜가 변경된 경우에만 이벤트를 트리거 할 수있는 솔루션을 필요로했기 때문에 나는 이것을 썼다.

    나는 날짜가 변경된 경우에만 이벤트를 트리거 할 수있는 솔루션을 필요로했기 때문에 나는 이것을 썼다.

    그것은 간단한 솔루션입니다. 대화 상자를 닫을 때마다 우리는 데이터가 변경되었는지 테스트합니다. 이 경우, 우리는 사용자 정의 이벤트를 트리거 및 저장된 값을 다시 설정합니다.

    $('.datetime').datepicker({
        onClose: function(dateText,datePickerInstance) {
            var oldValue = $(this).data('oldValue') || "";
            if (dateText !== oldValue) {
                $(this).data('oldValue',dateText);
                $(this).trigger('dateupdated');
            }
        }
    });
    

    이제 우리는 사용자 정의 이벤트에 대한 핸들러를 연결 할 수 있습니다 ...

    $('body').on('dateupdated','.datetime', function(e) {
        // do something
    });
    

  6. 6.나는 부트 스트랩 - 날짜 선택기와 나를 위해 일한 위의 솔루션 없음을 사용하고 있습니다. 이 대답은 나에게 도움이 ..

    나는 부트 스트랩 - 날짜 선택기와 나를 위해 일한 위의 솔루션 없음을 사용하고 있습니다. 이 대답은 나에게 도움이 ..

    수동으로 날짜 청산 날짜를 편집 할 때 날짜 선택기 변경 날짜 이벤트 나던 화재를 부트 스트랩

    저는 여기에 적용되는 것입니다 :

     $('.date-picker').datepicker({
         endDate: new Date(),
         autoclose: true,
     }).on('changeDate', function(ev){
            //my work here
        });
    

    이 캔 도움말 다른 사람을 바랍니다.


  7. 7.jQueryUi 1.9에 나는 추가 데이터 값과 beforeShow 및 onSelect를 기능의 조합을 통해 작업에 그걸 얻기 위해 관리했습니다 :

    jQueryUi 1.9에 나는 추가 데이터 값과 beforeShow 및 onSelect를 기능의 조합을 통해 작업에 그걸 얻기 위해 관리했습니다 :

    $( ".datepicker" ).datepicker({
        beforeShow: function( el ){
            // set the current value before showing the widget
            $(this).data('previous', $(el).val() );
        },
    
        onSelect: function( newText ){
            // compare the new value to the previous one
            if( $(this).data('previous') != newText ){
                // do whatever has to be done, e.g. log it to console
                console.log( 'changed to: ' + newText );
            }
        }
    });
    

    나를 위해 작동 :)


  8. 8.나는이 오래된 질문 알아요. 하지만 난 제대로 onSelect를 불에 JQuery와 $ (이) .change () 이벤트를 가져올 수 없습니다. 나는 다음과 같은 방법으로 가니 바닐라 JS를 통해 변경 이벤트가 발생합니다.

    나는이 오래된 질문 알아요. 하지만 난 제대로 onSelect를 불에 JQuery와 $ (이) .change () 이벤트를 가져올 수 없습니다. 나는 다음과 같은 방법으로 가니 바닐라 JS를 통해 변경 이벤트가 발생합니다.

    $('.date').datepicker({
         showOn: 'focus',
         dateFormat: 'mm-dd-yy',
         changeMonth: true,
         changeYear: true,
         onSelect: function() {
             var event;
             if(typeof window.Event == "function"){
                 event = new Event('change');
                 this.dispatchEvent(event);
             }   else {
                 event = document.createEvent('HTMLEvents');
                 event.initEvent('change', false, false);
                 this.dispatchEvent(event);
             }
         }
    });
    

  9. 9.이 시도

    이 시도

    $('#dateInput').datepicker({
     onSelect: function(){
           $(this).trigger('change');
          }
     }});
    

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


  10. 10.시도 :

    시도 :

    $('#idPicker').on('changeDate', function() {
        var date = $('#idPicker').datepicker('getFormattedDate');
    });
    

  11. 11.수동 말한다 :

    수동 말한다 :

    apply.daterangepicker: Triggered when the apply button is clicked, or when a predefined range is clicked
    

    그래서:

    $('#daterange').daterangepicker({
      locale: { cancelLabel: 'Clear' }  
    });
    
    $('#daterange').on('apply.daterangepicker', function() {
      alert('worked!');
    });
    

    나를 위해 작동합니다.


  12. 12.내 솔루션 :

    내 솔루션 :

    var $dateInput = $('#dateInput');
    
    $dateInput.datepicker({
        onSelect: function(f,d,i){
            if(d !== i.lastVal){
                $dateInput.trigger("change");
            }
        }
    }).data('datepicker');
    
    $dateInput.on("change", function () {
       //your code
    });
    

  13. 13.내 솔루션입니다 :

    내 솔루션입니다 :

    events: {
        'apply.daterangepicker #selector': 'function'
    }
    

  14. 14.아래 DatePicker에서 선택된 값 변경 이벤트 코드

    아래 DatePicker에서 선택된 값 변경 이벤트 코드

    /* HTML Part */
    <p>Date: <input type="text" id="datepicker"></p>
    
    /* jQuery Part */
    $("#datepicker").change(function() {
                    selectedDate= $('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val();
                    alert(selectedDate);        
                });
    

  15. 15.당신이 wdcalendar 사용하는 경우이 당신을 도울 것

    당신이 wdcalendar 사용하는 경우이 당신을 도울 것

     $("#PatientBirthday").datepicker({ 
            picker: "<button class='calpick'></button>",
            onReturn:function(d){
              var today = new Date();
              var birthDate = d;
              var age = today.getFullYear() - birthDate.getFullYear();
              var m = today.getMonth() - birthDate.getMonth();
              if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
                age--;
              }
    
              $('#ageshow')[0].innerHTML="Age: "+age;
              $("#PatientBirthday").val((d.getMonth() + 1) + '/' + d.getDate() + '/' +  d.getFullYear());
            }
          }); 
    

    onReturn 나를 위해 작동 이벤트

    이 도움말을 희망


  16. 16.나는 당신의 날짜 선택기가 설정이 얼마나 문제가에서 거짓말을 할 수있다 생각합니다. 당신이 입력을 분리하지 않는 이유는 ... altField를 사용하지 마십시오. 대신 명시 적으로 때 값들이 onSelect를 불을 설정합니다. 이것은 당신이 각각의 상호 작용을 제어 할 것이다; 사용자가 텍스트 필드와 날짜 선택기.

    나는 당신의 날짜 선택기가 설정이 얼마나 문제가에서 거짓말을 할 수있다 생각합니다. 당신이 입력을 분리하지 않는 이유는 ... altField를 사용하지 마십시오. 대신 명시 적으로 때 값들이 onSelect를 불을 설정합니다. 이것은 당신이 각각의 상호 작용을 제어 할 것이다; 사용자가 텍스트 필드와 날짜 선택기.

    참고 : 때때로 당신은 onSelect를가 당신이 기대되지 않도록 다른 상호 작용을 호출 할 수 있기 때문에) .change ()하지 .onSelect (에 루틴을 호출해야합니다.

    의사 코드 :

    $('#date').datepicker({
        //altField: , //do not use
        onSelect: function(date){
            $('#date').val(date); //Set my textbox value
            //Do your search routine
        },
    }).change(function(){
        //Or do it here...
    });
    
    $('#date').change(function(){
        var thisDate = $(this).val();
        if(isValidDate(thisDate)){
            $('#date').datepicker('setDate', thisDate); //Set my datepicker value
            //Do your search routine
        });
    });
    
  17. from https://stackoverflow.com/questions/6471959/jquery-datepicker-onchange-event-issue by cc-by-sa and MIT license