我正在生成我的HTML标签服务器端(asp.net mvc4)
我想预先设置我的HIDDEN字段的值和描述,避免使用ajax调用来获取initSelection
函数中的数据。
我见过有人使用javascript设置值:
$("#select2Test").select2('data', { id: 20832, text: 'LONDON' })
但是它仍然需要我额外的代码来实现已经从viewmodel中的服务器流式传输的东西。
我想出了类似的东西:
<input type="hidden" id="select2Test" name="select2Test" value="20832" data-option="LONDON" />
我已经使用HTML5数据属性data-option
和我的查找描述,并且我已经实现了initSelection函数,以便我可以读取my字段的值及其数据属性:
initSelection: function (item, callback) {
var id = item.val();
var text = item.data('option');
var data = { id: id, text: text };
callback(data);
},
我已经看到只有在隐藏字段设置了值时才会调用initSelection 一切似乎都正常。
还有更好的选择吗?
答案 0 :(得分:14)
data-option
结合自定义initSelection
就可以了。
$("#lookup_id").select2({
minimumInputLength: 3,
multiple: false,
allowClear: true,
ajax: {
url: urlFetchCity,
dataType: 'json',
type: "POST",
data: function (term, page) { return { city: term }; },
results: function (data, page) {
return {
return {results: data};
};
}
},
initSelection: function (item, callback) {
var id = item.val();
var text = item.data('option');
var data = { id: id, text: text };
callback(data);
},
formatResult: function (item) { return ('<div>' + item.id + ' - ' + item.text + '</div>'); },
formatSelection: function (item) { return (item.text); },
escapeMarkup: function (m) { return m; }
});
对于那些感兴趣的人我已经创建了一个GitHub repository,您可以在其中找到一个 ASP.NET MVC4 项目,其中我添加了一个html助手来创建一个 select2 标记,包含客户端验证的所有功能。