2015-09-25 47 views
1

如何获取超出默认值的值,这意味着我只想获取新值自定义插入。jquery select2标签获取超出默认值

E.g现在我的默认值是“红色”,“绿色”,“蓝色”。 如果用户输入“黄色”,“黑色”。我只想新标签已通知,因此我可以将其存储在数据库中以便下一个用户预先填充。

我选择2版本3.4.2是

HTML:

<input id="tags" class="text-input form-control" type="text" name="tags" size="24" placeholder="tags" > 

JS:(在文档)

$(document).ready(function() { 
    $("#tags").select2({ 
    tags: ["red", "green", "blue"], 
    maximumInputLength: 10 
    }); 
}); 

我使用旧版本的jQuery老版本选择2 小提琴链接: http://jsfiddle.net/jb4b2cnu/

这是怎么制作的?

回答

1

如果我正确理解你的问题,这是添加新的标签,如果它不存在,并通知到database那么你可以在通过选项createTag创建newTag设置一个变量,然后利用select2.select事件发送或通知您的db有关新增tag。例如:

$("#tags").select2({ 
    tags: ["red", "green", "blue"], 
    maximumInputLength: 10, 
    createTag: function (tag) { 
     return { 
      id: tag.term, 
      text: tag.term, 
      isNew : true 
     }; 
    } 
}).on("select2:select", function(e) { 
    if(e.params.data.isNew){ 
     alert('make db call here');    
     $(this).find('[value="'+e.params.data.id+'"]').replaceWith('<option selected value="'+e.params.data.id+'">'+e.params.data.text+'</option>'); 
    } 
}); 

A样品DEMO

+0

嗨Guruprasad饶,感谢您的解决方案!正如我测试你的代码在select2 4.0中运行良好。但是我的开发使用的是3.5版本。我已经更新了小提琴,你可以看看吗?谢谢! – Shiro

+0

@ Shiro ..搜索完所有网站后,我得出结论:没有选项可以将新元素添加到选项列表中,但不确定,或通知标签是否为**新**,但是有事件调用'select2.selecting'而不是'select2:select',但再次没有太多选项可以操作.. –

1

后,我在一个旧版本的文献研究,从(Select2 with createSearchChoice uses newly created choice for keyboard entry even given a match, bug or am I missing something?)回答后,并结合古鲁普拉萨德饶想法。

这是我可以在旧版本中存档的内容。

var result = ["red", "green", "blue"]; 
var isNew = false; 
var varNew = []; 
i = 0; 
$("#tags").select2({ 
    tags: result, 
    maximumInputLength: 10, 
    createSearchChoice:function(term, data) { 
     if(result.some(function(r) { return r.text == term })) { 
      return { id: term, text: term }; 
     } 
     else { 
      isNew = true; 
      varNew[i++] = term; 
      return { id: term, text: term + " (new)" }; 
     } 
    }, 
});