DatePicker仅在Yii2中的第一行Dynamic Form上工作

时间:2017-10-06 06:28:09

标签: datepicker yii2 dynamicform

我正在使用wbraganca动态表单。我面临的问题是,datepicker适用于第一行动态表单。但在其余的行上它不起作用。我已经尝试了几乎所有可能的解决方案,但它们都没有为我工作。

我对代码所做的第一个改动是通过替换下面的代码在yii2-dynamic-form.js中进行更改

// "kartik-v/yii2-widget-datepicker"
        var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-datepicker]');
        var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-datepicker]');
        if ($hasDatepicker.length > 0) {
            $hasDatepicker.each(function() {
                $(this).parent().removeData().datepicker('remove');
                $(this).parent().datepicker(eval($(this).attr('data-krajee-datepicker')));
            });
        }

用这个

// "kartik-v/yii2-widget-datepicker"
       var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-kvdatepicker]');
		  if ($hasDatepicker.length > 0) {
			  $hasDatepicker.each(function() {
			  $(this).parent().removeData().kvDatepicker('remove');
			  $(this).parent().kvDatepicker(eval($(this).attr('data-krajee-kvdatepicker')));
		  });
	  }

现在它在控制台中显示错误,如下所示

Uncaught TypeError: Cannot read property 'deprecated' of undefined
    at Datepicker.remove (bootstrap-datepicker.js:33)
    at HTMLDivElement.<anonymous> (bootstrap-datepicker.js:1649)
    at Function.each (jquery.js:365)
    at jQuery.fn.init.each (jquery.js:137)
    at jQuery.fn.init.datepickerPlugin [as kvDatepicker] (bootstrap-datepicker.js:1626)
    at HTMLInputElement.<anonymous> (yii2-dynamic-form.js:316)
    at Function.each (jquery.js:365)
    at jQuery.fn.init.each (jquery.js:137)
    at _restoreSpecialJs (yii2-dynamic-form.js:315)
    at _addItem (yii2-dynamic-form.js:116)

提前致谢。

2 个答案:

答案 0 :(得分:1)

实际上,我费了好几个小时才终于想出一个简单的解决方案,有时候从您的经验中找出一个解决方案比寻找几个小时要好。

我所做的与您相同,但是随后我做了简单的修改

public void tearDown() {
    // here goes other code to be executed after each test case
    getActivity().finish();
}

Jus捕获了具有.krajee-datepicker类的输入,并使用KvDatepicker对其进行了初始化,将您创建的第一个datepicker元素的选项加载到该输入中。

对我有用。告诉我是否可行

答案 1 :(得分:-1)

我正在许多嵌入式动态表单上处理此问题,并且该问题已通过以下方式解决:

1。-转到文件夹frontend / web / assets或backend / web / assets并删除其中的所有文件(缓存文件),. gitignore除外(如果使用的是git

2。-转到vendor / wbraganca / yii2-dynamicform.js并注释段落块

    // "kartik-v/yii2-widget-datepicker"
    /*
    var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-datepicker]');
    if ($hasDatepicker.length > 0) {
        $hasDatepicker.each(function() {
            $(this).parent().removeData().datepicker('remove');
            $(this).parent().datepicker(eval($(this).attr('data-krajee-datepicker')));
        });
    }
    */

3.-在其中粘贴下一个代码

    // "kartik-v/yii2-widget-datepicker"
    var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-kvdatepicker]');
    if ($hasDatepicker.length > 0) {
        $hasDatepicker.each(function () {
            console.log("Clonado2....");
            $(this).parent().removeData().off();
            //$(this).parent().removeData().kvDatepicker('remove');
            $(this).parent().kvDatepicker(eval($(this).attr('data-krajee-kvdatepicker')));
            //$(this).parent().find('.krajee-datepicker').kvDatepicker(eval($(this).attr('data-krajee-kvdatepicker')));
        });
    }

4.-享受; D