【问题标题】:Adding additonal Selected value in Select2 on button click?单击按钮时在 Select2 中添加额外的 Selected 值?
【发布时间】:2014-09-19 12:00:35
【问题描述】:

场景是,我需要通过单击一个按钮将一个值(一个选定的值)附加到 select2。如果我点击我的按钮会发生什么,我选择的其他值将消失/清除。

仅选择了 1 个值,这是我的按钮功能中的值。直接输入我的 select2 文本框时,我可以选择多个值,但是如果我单击按钮,它的值不会添加到 select2。

如何在单击按钮上的 select2 中为已选择的数据附加一个值或推送一个附加值?每次单击按钮时,都应向 select2 选定的值添加一个新值。

我希望我下面的代码以及我对我正在寻找的内容的描述对你们有所帮助。谢谢。

我正在使用 Northwind 数据库进行测试。 (Robert King 在 Employee Table 下)

<input type="button" onclick="Passvalue();"/>
<input type="text" id="eq" name="eq" style="width: 200px;" />

<script>
    $(function () {       
        $("#eq").select2({
            minimumInputLength: 3,
            multiple: true,
            ajax: {
                url: '/Employee/GetAllEmployees/',
                dataType: 'json',
                type: "GET",
                data: function (searhTerm) {               
                    return { query: searhTerm };
                },
                results: 
                    function (data) {                
                        return { results: data};
                    },                             
            },
            initSelection: function (element, callback) {
                var id=$(element).val();  //element value will be 'Robert';
                if (id!=="") {
                    $.ajax('/Employee/GetAllEmployees/', {
                        data: {
                            query: id
                        },
                        dataType: "json",
                        type: "GET",
                    }).done(function(data) { callback(data); });
                }               
                },
            createSearchChoice: function (term) {          
                return {id: term, text: term + ' (new)', title: term };    
            },

            formatResult: FormatContact,
            formatSelection: FormatContactSelection,
            escapeMarkup: function(m) {
                return m;
            }
        });
    });

    function FormatContact(contact) {

        return contact.text + "&nbsp;(" + contact.title + ")";
    }

    function FormatContactSelection(contact) {
        return " &nbsp; &nbsp;"+ contact.text;
    }

    function Passvalue() { 
        var test2 = "Robert"; //just an example, value 'Robert' to be passed on select2 for query     
        $('#eq').select2("val", [test2]);    
    }
</script>

我的动作控制器:

public ActionResult GetAllEmployees(string query)
            {
                var db = new Employee().GetAllEmployees(query).
                    ToList();        
                return Json(db, JsonRequestBehavior.AllowGet);
            }

BL:

public IQueryable<Object> GetAllEmployees(string search)
        {
            var ctx = new NorthwindEntities();
            var dbQuery =
            (from i in ctx.Employees
             where i.FirstName.Contains(search) || i.LastName.Contains(search)
             select new
                    {
                        id = i.EmployeeID,
                        text = i.FirstName + " " + i.LastName,
                        title = i.Title
                    });
           return dbQuery;
        }

【问题讨论】:

标签: javascript jquery button jquery-select2


【解决方案1】:

不要使用“val”,而是使用“data”。像这样的

this.$("#yourSelector").select2("data", [{ id: 1, text: "Some Text" },{ id: 2, text: "Some Other Text" }]);

所以这样的东西对你有用......

var existingData = this.$("#yourSelector").select2("data");
existingData.push({ id: 11, text: "Some Text" });
this.$("#yourSelector").select2("data", existingData);

P.S : 我没有测试过上面的代码。

【讨论】:

  • 我在下面使用此代码:来自您的答案 data.push({ id: id, text: text }); $('#myselector').select2("data", data, true); //刷新select2数据值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多