wbraganca yii2 动态表单日期选择器问题?
wbraganca yii2 dynamic form date picker issue?
我正在使用 wbraganca 动态表单。在我的表单中,一个字段需要日期选择器,所以我使用如下所示的 jui 日期选择器
<?= $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); ?>
早些时候我遇到了一个问题,那就是日期选择器只打开第一个表单,如果用户点击添加按钮意味着表单会出现但日期选择器不会出现,所以我添加了一个自定义脚本,如下所示
$(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
});
});
});
});
所以日期选择器可以正确打开所有表单,我打开多个表单并一个一个地选择日期选择器意味着它工作正常。但问题是,例如,首先我打开两个表单并关闭第一个表单,现在第二个表单先出现,那时日期选择器会出现但不可点击。
使用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 classhasDatepicker
重新初始化日期选择器。
我正在使用 wbraganca 动态表单。在我的表单中,一个字段需要日期选择器,所以我使用如下所示的 jui 日期选择器
<?= $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); ?>
早些时候我遇到了一个问题,那就是日期选择器只打开第一个表单,如果用户点击添加按钮意味着表单会出现但日期选择器不会出现,所以我添加了一个自定义脚本,如下所示
$(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
});
});
});
});
所以日期选择器可以正确打开所有表单,我打开多个表单并一个一个地选择日期选择器意味着它工作正常。但问题是,例如,首先我打开两个表单并关闭第一个表单,现在第二个表单先出现,那时日期选择器会出现但不可点击。
使用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 classhasDatepicker
重新初始化日期选择器。