怎么给设置了ajax的select2控件设置一个值呢
如何给设置了ajax的select2控件设置一个值呢?
这个是我select2控件的初始化代码:
我现在是想从后台传一个term的特征值过来,然后触发原始的查询方法,然后将查询结果的第一个选项设置为当前选项,该如何做呢?
------解决思路----------------------
将term值赋给输入框,然后触发change事件或者keypress事件(假定这个控件是通过这些事件触发ajax的)
------解决思路----------------------
asp.net只有 UpdatePanel 是它的(8、9年前的)ajax解决方案。
如果你使用现代的 ajax 编程方法,它是跟 asp.net 的机制不协调的。无奈只有放弃 asp.net 的所谓“后台”思路。你根本就不应该在 asp.net 中对浏览器上的渲染编程,你的 asp.net 程序应该仅用于下载(与客户端 html/css 无关的)数据。
------解决思路----------------------
所谓“后台”就应该是一个独立的数据web服务。
ajax获得数据之后,所谓“触发原始的查询方法”是根本做不到的(因为用户可能上厕所去了而没有坐在电脑前面,就算坐在这里你的程序也不可能抓着人家的鼠标去操作)。你能够做的是在ajax的查询返回结果函数中“给另一个列表赋值,然后绑定另一个列表的选择事件,在这个事件处理js函数中读取结果并且再注销这个事件处理js函数。
------解决思路----------------------
这个是我select2控件的初始化代码:
$('#productId').select2({
language : 'zh-CN',
placeholder:"输入产品名称",//文本框的提示信息
minimumInputLength:2, //至少输入n个字符,才去加载数据
maximumInputLength:100,//限制最大字符,以防坑货
ajax: {
url: home+'/erppurchase/searchpic.shtml',
dataType: 'json',
delay: 250,
data: function (params) {
return {
'term' : params.term // 查询的关键字
};
},
processResults: function (data, page) {
return {
results: data.items
};
},
cache: true
},
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
templateResult: formatRepo, // 显示查询结果
templateSelection: formatRepoSelection // 显示选中的对象
});
function formatRepo (repo) {
if (repo.loading) return repo.text;
var markup = '<div class="clearfix">' +
'<div class="col-sm-12">' +
'<img src="' + repo.urlWithAppend + '" style="max-width: 100%" />' +
'</div>' +
'<div class="col-sm-12">' + repo.no + '</div>' +
'</div>';
return markup;
}
function formatRepoSelection (repo) {
return repo.no;
}
我现在是想从后台传一个term的特征值过来,然后触发原始的查询方法,然后将查询结果的第一个选项设置为当前选项,该如何做呢?
------解决思路----------------------
将term值赋给输入框,然后触发change事件或者keypress事件(假定这个控件是通过这些事件触发ajax的)
------解决思路----------------------
asp.net只有 UpdatePanel 是它的(8、9年前的)ajax解决方案。
如果你使用现代的 ajax 编程方法,它是跟 asp.net 的机制不协调的。无奈只有放弃 asp.net 的所谓“后台”思路。你根本就不应该在 asp.net 中对浏览器上的渲染编程,你的 asp.net 程序应该仅用于下载(与客户端 html/css 无关的)数据。
------解决思路----------------------
所谓“后台”就应该是一个独立的数据web服务。
ajax获得数据之后,所谓“触发原始的查询方法”是根本做不到的(因为用户可能上厕所去了而没有坐在电脑前面,就算坐在这里你的程序也不可能抓着人家的鼠标去操作)。你能够做的是在ajax的查询返回结果函数中“给另一个列表赋值,然后绑定另一个列表的选择事件,在这个事件处理js函数中读取结果并且再注销这个事件处理js函数。
------解决思路----------------------
$('input').val('term');
$('input').change();//这个需要确认你这个select2是通过change还是keyup,keydown,keypress哪个事件触发的,然后这里模拟触发