jQuery Select2 Ajax - 如何设置值(initSelection)

7

如何设置用户在下拉列表中选择的项目?

场景:
1. 用户没有在表单中输入所有必填内容
2. 点击发送。
3. 页面刷新后,下拉列表中的值未被选中。 如何选择该值?

我有一个可以检索列表数据的可行脚本。

$('#userid').select2({
placeholder : " --- select ---",
minimumInputLength: 2,
ajax: {
    url: "index.php?modul=getusers",
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    data: function (term, page) {
        return {
            q: term,
            page_limit: 10
        };
    },
    results: function (data, page) {
        return { results: data };
    }
},
allowClear: true,
formatSelection: function(data) { 
   return data.text; 
}   
});

AJAX调用中的标准数据: {"text":"示例文本", "id":"1"}

输入:

  <input type="text" value="<? echo $_POST['userid']; ?>" class="input" id="userid" name="userid"> 

我尝试添加以下代码,但它不起作用。

initSelection: function(element, callback) {
    var id=$(element).val();
    if (id!=="") {
       $.ajax("index.php?modul=getusersfriend&q="+id, {
       dataType: "json"
       }).done(function(data) { callback(data); });
    }
},
1个回答

0

请确保在initSelection的回调函数中返回一个格式正确的JSON对象。这方面的讨论已经在这里提到过了。

但目前看起来很不错。您可能想要绑定选择器的更改事件或表单提交事件,以在提交表单之前序列化其值。

您可以将其值存储在服务器上(不好),或者只需序列化表单对象并获取要传递给select2的值即可。

这就是这里会发生的事情:

 var id=$(element).val();

这里有一个简单的示例,可以将您的表单序列化。

PS:我真的不明白Bootstrap与任何事情有什么关系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接