1

wbraganca 동적 양식을 사용하고 있습니다. 내 양식에 하나 개의 필드가 날짜 선택이 필요하므로 사용자 추가 버튼을 클릭하면 내가,wbraganca yii2 동적 양식 날짜 선택 도구 문제?

<?= $form->field($model, "[{$i}]DOB")->widget(DatePicker::classname(), [ 
         'language' => 'en', 
         'options' => ['class'=>'cust-form-control dob','placeholder'=>'Date of birth','autocomplete'=>'off','readOnly'=>true,'aria-label' => 'Date of Birth'], 
          'clientOptions'=>[ 
          'changeMonth'=>true, 
          'changeYear'=> true, 
          'yearRange'=> "1925:+0", 
          'dateFormat' => 'dd/mm/yy', 
          'maxDate' => "-1D", 
          ], 
        ])->label(false); ?> 

이전에 내가 한 가지 문제에 직면 오전, 즉 날짜 선택은 첫 번째 양식을 열 것입니다 아래 같은 JUI 날짜 선택기를 사용하는 형태는 것을 의미합니다 표시되지만 datepicker가 나타나지 않으므로 아래와 같이 하나의 사용자 정의 스크립트를 추가합니다.

$(function() { 
$(".dynamicform_wrapper").on("afterInsert", function(e, item) { 
    $(".dob").each(function() { 
     $(this).datepicker({ 
     dateFormat : 'dd/mm/yy', 
     yearRange : '1925:+0', 
     maxDate : '-1D', 
     language : 'en', 
     changeMonth: true, 
     changeYear: true 
     }); 
    });   
}); 

}};

그래서 날짜 선택 도구가 모든 양식을 올바르게 열고 여러 양식을 열어서 날짜 선택 도구를 하나씩 선택하면 올바르게 작동합니다. 하지만 문제는 예를 들어, 먼저 두 개의 양식을 열고 첫 번째 양식을 닫습니다. 이제 두 번째 양식이 처음으로 나타나고 날짜 선택 도구가 나타나지만 클릭 할 수 없습니다.

+0

http://stackoverflow.com/questions/40457408/select2-and-depdrop-in-dynamic-form-in-yii2/40468025#40468025 – yafater

+0

작업하면 운이 나면 업데이트됩니다. –

+1

u와 firebug에 감사드립니다.이 error/uncaught 예외가 있습니다.이 datepicker에 대한 인스턴스 데이터가 누락되었습니다. –

답변

2

사용 afterDelete 및 재 초기화 날짜 선택기 :

$this->registerJs(' 
$(function() { 
    $(".dynamicform_wrapper").on("afterInsert", function(e, item) { 
     $(".dob").each(function() { 
      $(this).datepicker({ 
       dateFormat : "dd/mm/yy", 
       yearRange : "1925:+0", 
       maxDate : "-1D", 
       changeMonth: true, 
       changeYear: true 
      }); 
     });   
    }); 
}); 
$(function() { 
    $(".dynamicform_wrapper").on("afterDelete", function(e, item) { 
     $(".dob").each(function() { 
      $(this).removeClass("hasDatepicker").datepicker({ 
       dateFormat : "dd/mm/yy", 
       yearRange : "1925:+0", 
       maxDate : "-1D", 
       changeMonth: true, 
       changeYear: true 
      }); 
     });   
    }); 
}); 
'); 

당신 need to remove 클래스 hasDatepicker는 날짜 선택기를 다시 초기화합니다.

+0

감사합니다. 너무 많이 감사합니다 .Insane Skull, 지난 3 일 동안 다시 감사했습니다. –

+0

@vishva. 다행 이네. –