如何解决yii2中动态表单上的select 2 widget错误

时间:2017-02-14 07:30:27

标签: php yii2 dynamicform

这就是错误:

enter image description here

当我在wbrangca的动态表单小部件上使用select 2时,该错误才存在。同样的问题也发生在贬低中。

控制台错误:

jquery.js:1468 Uncaught Error: Syntax error, unrecognized expression: #salesqty-{$i}-catagory_id
at Function.Sizzle.error (jquery.js:1468)
at Sizzle.tokenize (jquery.js:2125)
at Sizzle.select (jquery.js:2546)
at Function.Sizzle [as find] (jquery.js:869)
at jQuery.fn.init.find (jquery.js:2792)
at jQuery.fn.init (jquery.js:2909)
at jQuery (jquery.js:75)
at HTMLDocument.<anonymous> (create:809)
at fire (jquery.js:3187)
at Object.fireWith [as resolveWith] (jquery.js:3317)
yii2-dynamic-form.js:90 Uncaught TypeError: Cannot read property 'settings' of undefined
at _parseTemplate (yii2-dynamic-form.js:90)
at HTMLFormElement.<anonymous> (yii2-dynamic-form.js:37)
at Function.each (jquery.js:365)
at jQuery.fn.init.each (jquery.js:137)
at jQuery.fn.init.init (yii2-dynamic-form.js:36)
at jQuery.fn.init.$.fn.yiiDynamicForm (yii2-dynamic-form.js:19)
at create:826
at dispatch (jquery.js:4737)
at elemData.handle (jquery.js:4549)

javascript看起来像:

var $hasSelect2 = $(widgetOptionsRoot.widgetItem).find('[data-krajee-select2]');
if ($hasSelect2.length > 0) {
    $hasSelect2.each(function() {
        var id = $(this).attr('id');
        var configSelect2 = eval($(this).attr('data-krajee-select2'));

        if ($(this).data('select2')) {
            $(this).select2('destroy');
        }

        var configDepdrop = $(this).data('depdrop');
        if (configDepdrop) {
            configDepdrop = $.extend(true, {}, configDepdrop);
            $(this).removeData().off();
            $(this).unbind();
            _restoreKrajeeDepdrop($(this));
        }
        var s2LoadingFunc = typeof initSelect2Loading != 'undefined' ? initSelect2Loading : initS2Loading;
        var s2OpenFunc = typeof initSelect2DropStyle != 'undefined' ? initSelect2Loading : initS2Loading;
        $.when($('#' + id).select2(configSelect2)).done(s2LoadingFunc(id, '.select2-container--krajee'));

        var kvClose = 'kv_close_' + id.replace(/\-/g, '_');

        $('#' + id).on('select2:opening', function(ev) {
            s2OpenFunc(id, kvClose, ev);
        });

        $('#' + id).on('select2:unselect', function() {
            window[kvClose] = true;
        });

       if (configDepdrop) {
            var loadingText = (configDepdrop.loadingText) ? configDepdrop.loadingText : 'Loading ...';
            initDepdropS2(id, loadingText);
        }
    });
} 

如果我不使用select 2小部件,则控制台上不会出现错误。

1 个答案:

答案 0 :(得分:0)

如果你还需要...... 检查单个

的使用
  

而不是