mik*_*key 4 javascript jquery jquery-select2
我正在使用select2,我对这个图书馆有点新手.我有一个页面,如果该值被发布,我的select2输入应设置为默认值.这是html
<!-- COUNTRY -->
<span id="agency_data">
<input type="hidden" name="country_id" id="filter_country" data-placeholder="Choose A Country Name" data-init-text="<?= isset($data['cty_name']) ? $data['cty_name'] : '' ?>" value="<?= isset($data['cty_name']) ? $data['cty_name'] : '' ?>" />
</span>
Run Code Online (Sandbox Code Playgroud)
这是我的jQuery
//******** COUNTRY ********
if(typeof countryId === 'undefined') {
countryId = '';
}
if(typeof countryName === 'undefined') {
countryName = '';
}
var dataArray = [{id:countryId,text:countryName}];
$('#filter_country').select2({
minimumInputLength: 0,
allowClear: true,
ajax: {
url: base +"/agencyList/search",
dataType: 'json',
type: 'POST',
data: function (term, page) {
return {
country: term
};
},
results: function (data, page) {
return {
results: data
};
}
},
data:dataArray,
initSelection: function (element, callback) {
$(dataArray).each(function() {
if (this.id == element.val()) {
callback(this);
return
}
})
}
});
Run Code Online (Sandbox Code Playgroud)
正如我所说,我无法弄清楚如何设置输入的默认值.我已经看过这个解决方案,但仍然无法让它工作.有什么帮助吗?
工作方案
感谢约翰在这里是我如何工作:html:
<span id="agency_data">
<input type="hidden" name="ag_cty_id" id="filter_country" data-placeholder="Choose A Country Name" data-init-text="<?= isset($data['cty_name']) ? $data['cty_name'] : '' ?>" value="<?= isset($data['ag_cty_id']) ? $data['ag_cty_id'] : '' ?>" />
</span>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$('#filter_country').select2({
minimumInputLength: 0,
allowClear: true,
ajax: {
url: base +"/agencyList/search",
dataType: 'json',
type: 'POST',
data: function (term, page) {
return {
country: term
};
},
results: function (data, page) {
return {
results: data
};
}
},
initSelection: function (element, callback) {
console.log('id elemt: ' + element.val());
callback({ id: element.val(), text: element.attr('data-init-text') });
}
});
Run Code Online (Sandbox Code Playgroud)
我想原因告诉你不工作的代码是你比较id的对象的财产在dataArray该value输入,但value输入的是一个国家的名字,而不是一个国家ID.
您应该将value输入设置为国家/地区的ID,而不是其名称.
然后你可以避免使用dataArray和使用:
initSelection: function(element, callback) {
callback({ id: element.val(), text: element.attr('data-init-text') });
}
Run Code Online (Sandbox Code Playgroud)
这利用了id从value输入的和text从data-init-text输入的属性.
| 归档时间: |
|
| 查看次数: |
5571 次 |
| 最近记录: |