将magicsuggest附加到动态元素上

时间:2016-07-12 08:04:47

标签: jquery dynamic magicsuggest

我想问一下如何在多个动态元素上附加magicsuggest? 有没有人以前做过?

继续这种情况,每次我输入"逗号"或点击"输入"它应该创建一个带有2个输入的面板,每个输入带有magicsuggest。所以,如果我输入:

 1 towel, 2 plates

它应该创建2个面板,每个面板有2个输入,每个面板都带有magicsuggest。

上述情况已经完成,但现在的问题是,当它使用magicsuggest加载所有输入时,它总是关注第一个输入。我可以选择其他人,但总是专注于第一个。

我尝试过这段代码,但无济于事。

var ms = {};
for(var i = 1; i <= 2; i++){        

    ms[i] = $('#text_area_request_'+i).magicSuggest({
        id: "request_id_" + i,
        name: "request_id[" + i + "]",
        allowFreeEntries: false,            
        width: 350,
        maxSelection: 1,    
        data: ["Wifi", "Steak", "Food", "Water"],           
    });

}   

由于

2 个答案:

答案 0 :(得分:0)

首先,您忘记了数据键末尾的逗号(&#34; Water&#34;] ,.)

如果你删除它仍然无效..你可以尝试以下..

创建一个函数attachMagicSuggest(&#39; text_area_request_0&#39;),它将把您想要填充数据的输入的ID作为参数。

每次创建新面板(或任何你称之为的面板)时,也要运行此功能。

function attachMagicSuggest(inputId){

    var ms1 = $('#'+inputId).magicSuggest({
     placeholder: 'Select a cuisine',
     allowFreeEntries: false,            
     width: 350,
     maxSelection: 1,    
     data: ["Wifi", "Steak", "Food", "Water"]
    });

}

答案 1 :(得分:0)

我不完全确定您的焦点是什么意思,但也许问题是您每次都引用相同的对象。确保每次循环时都使用不同的对象。 magicSuggest的返回值不能直接附加到另一个jquery对象,所以我不得不使用类似这样的函数:

function buildMagicSuggest(id, options, setValue) {
    var $input = $('<input>', {id: id, class: 'form-control'});
    var data = [];
    for (var i = 0; i < options.length; i++) {
        if (options[i] === null) {
            continue;
        }
        var name = options[i] === '' ? '&nbsp;' : options[i];
        data.push({id: options[i], name: name});
    }
    var magic = $input.magicSuggest({
        placeholder: '',
        allowFreeEntries: true,
        selectPositions: 'bottom',
        selectionStacked: false,
        maxDropHeight: 145,
        maxSelection: 1
    });
    magic.setData(data);
    setValue && magic.setValue([setValue]);
    return magic.container;
}

然后您可以像这样使用此功能:

$('#the-form').append(buildMagicSuggest(
    inputId,
    ["Wifi", "Steak", "Food", "Water"],
    "Wifi"
));

关键是找到包含整个控件(容器)的magicSuggest对象的正确属性。