在更改BoostrapTable X可编辑选择框时获取文本而不是值
问题描述:
我使用BootstrapTable
和x-editable
来构建包含选择联系人框的表。当用户选择一个新值时,我会提醒他们他们选择了什么。使用editable-save.bs.table
,我可以获得与选择选项相关的值,但这对用户无意义。我想获取与该值关联的联系人姓名。怎样才能做到我这样做在更改BoostrapTable X可编辑选择框时获取文本而不是值
小提琴:http://jsfiddle.net/cdvtkndu/
var data = [{"Contact": 3}, {"Contact": 2}];
$(function() {
$('#table').bootstrapTable({
columns: [{
field: 'Contact',
title: 'Contact',
editable: {
type: 'select',
source: [
{value: 4, text: 'Andrew'},
{value: 2, text: 'John'},
{value: 3, text: 'Liz'}
]
}
}],
data: data
});
});
$('#table').on('editable-save.bs.table', function (e, field, row, old, $el) {
var new_val = row[field];
alert(new_val);
});
答
你可以转储源到一个数组,然后遍历槽它,以便找到您要搜索的行:
var data = [{"Contact": 3}, {"Contact": 2}];
var _source = [
{value: 4, text: 'Andrew'},
{value: 2, text: 'John'},
{value: 3, text: 'Liz'}
];
$(function() {
$('#table').bootstrapTable({
columns: [{
field: 'Contact',
title: 'Contact',
editable: {
type: 'select',
source: _source
}
}],
data: data
});
});
$('#table').on('editable-save.bs.table', function (e, field, row, old, $el) {
var new_val = row[field];
var arrayLength = _source.length;
for (var i = 0; i < arrayLength; i++) {
if (_source[i].value == new_val) {
alert(_source[i].text);
break;
}
}
});
谢谢。我曾想到这一点。这个方法唯一的问题是我真正的桌子有很多领域,有些是选择框,有些则不是。我不知道如何确定哪些需要循环来源数组。有任何想法吗? – user2242044
你可以有另一个数组标记至少需要迭代低谷并用if检查它,使用_source作为保存所有字段的变量。 (如果我明白你想要什么,如果不是,请纠正我,并提供更多的代码)类似这样的:http://jsfiddle.net/9ouxeozs/ –
是的,这似乎是最好的办法,因为什么都没有内置到X可编辑库我可以找到。 – user2242044