yii2 datepicker无法渲染

问题描述 投票:0回答:1

我想在我的应用程序中添加多个活动表单。然后,当单击(添加表单)按钮时,我使用一些jquery代码追加一些行。一切运行良好,但是在单击第二,第三行时,某些表格未显示日期选择器输入。 form datepicker

然后我发现第一行形式和第二行形式之间有些不同。第二种形式在输入标记中没有class =“ hasDatepicker”。

inspect element

所以我从模型传递了html class =“ hasDatepicker”

public function renderTableAktivitas($form, $formAktivitas)
 {
   return Html::tag('tr',
   Html::tag('td', $formAktivitas->action) .
   Html::tag('td', $form->field($formAktivitas, 'Tanggal_Kegiatan', ['template' => '<label class="input"><i class="icon-append fa fa-calendar"></i>{input}</label>{error}'])
    ->widget(\yii\jui\DatePicker::classname(), [
    'clientOptions' => ['altField' => "yyyy-mm-dd"],
    'options' => ['class' => 'form-control hasDatepicker']
    ])
  ).
   Html::tag('td', $form->field($formAktivitas, 'Jenis_Kegiatan', ['template' => '<label class="input">{input}</label>{error}'])->widget(\conquer\select2\Select2Widget::className(), [
    'items' => [0,1,2,3,4],
    'options' => ['prompt' => '- Test select -', 'style' => 'width:100%'],
   ])) .
   Html::tag('td', $form->field($formAktivitas, 'Keterangan')->textArea()->label(false), ['style' => ['width' => 'aa50%']])
   ,['data-id' => $formAktivitas->idName]
   );
 }

class =“ hasDatepicker”现在包含在第一个和第二个表单中,但datepicker输入未同时显示在两个表单中。

enter image description here

这是我的jquery代码,用于在我的应用程序中添加某种形式。

body.delegate('[data-action=add_row_table_aktivitas]', 'click', function () {
    var elm = $(this);
    var tbl = elm.closest('fieldset').find('table');
    var form = elm.closest('form');
    $.ajax({
        // url: '',
        method: 'post',
        data: {'new_row_act': (tbl.find('tr').length - 1)},
        error: function (response) {
            alert_notif({status: "error", message: 'tidak bisa save'});
        },
        success: function (response) {
            var t = $(response.data);
            if ($.fn.select2 !== undefined){
                t.find('select').select2({"width":"100%"});
                t.find('.select_multi').select2({"width":"100%"});
                t.find('.summernote').summernote();
                t.find('form-control').addClass("hasDatepicker");
            }
            var tbody = tbl.find('tbody');
            if (tbody.length > 1) {
                $(tbody[0]).append(t);
            } else {
                tbody.append(t);
            }
            $.each(response.jsAdd, function (i, v) {
                var vali = eval("var f = function(){ return " + v.validate.expression + ";}; f() ;");
                v.validate = vali;
                $(form).yiiActiveForm('add', v);
            });
        }
    });

});

似乎日期选择器不仅仅是由表单输入中的class =“ hasDatepicker”触发的。因此我该如何解决我应用程序中的此问题?

php jquery datepicker yii2 yii2-advanced-app
1个回答
0
投票

这个问题与此相似。您可以在这里访问。 https://stackoverflow.com/a/34334388/11218275

$('body').on('focus',".datepicker", function(){

    if( $(this).hasClass('hasDatepicker') === false )  {
        $(this).datepicker();
    }

});
© www.soinside.com 2019 - 2024. All rights reserved.