我在选择列表中使用jEditable。它的工作非常精美,除了以下问题。 jEditable显示在提交后服务器发回的任何内容。这适用于文本框等,您只需将提交的值从服务器发回。
但是,这对选择列表没有意义,因为发布的值只是选项元素的Id。如果我将其发回,那么我的文本将更改为Id,而不是之前的友好文本。
如何关闭此行为?我不想再次使用来自DB的提交的Id来获取文本值,只是为了显示目的而将其发回。应该有一种方法来保留选项文本,然后让jEditable在提交后将其放回标签中。帮助
答案 0 :(得分:6)
只需在可编辑配置对象中添加回调,即:
callback: function (value, settings) {
$(this).html(settings.data[value]);
}
答案 1 :(得分:3)
几乎就在那里。 我和William Niu的代码有两个问题。 首先,您不能以这种方式访问可变数据,而是使用settings.data。 其次,变量数据不是数组,而是字符串,因此data [value]不起作用。 这是我的代码,试试这个。
$(".editable").editable("yoursave.php", {
type : 'select',
data : '{'E':'Letter E','F':'Letter F','G':'Letter G'}',
callback: function(value, settings) {
$(this).html(jQuery.parseJSON(settings.data)[value]);
}
});
答案 2 :(得分:1)
jEditable为您提供各种回调函数来操作数据。这可能取决于您获取数据以填充select
的方式。例如,如果数据是常量映射,则可以从返回的键中轻松找到值:
var data = {'E':'Letter E','F':'Letter F','G':'Letter G'};
$('#editable').editable('some url', {
type: 'select',
data: data,
callback: function(value, settings) {
$(this).html(data[value]);
},
submit: 'ok'
});
答案 3 :(得分:1)
Hammers代码中的回调函数是正确的,但我在解析数据时遇到了问题:
"JSON.parse: expected property name or '}' "
数据应符合json,意思是:
数据:'{"E":"Letter E","F":"Letter F","G":"Letter G"}',
所以正确的代码就像
$(".editable").editable("yoursave.php", {
type : 'select',
data : '{"E":"Letter E","F":"Letter F","G":"Letter G"}',
callback: function(value, settings) {
$(this).html(jQuery.parseJSON(settings.data)[value]);
}
});
如果你有一个简单的数组而不是关联数组,你可以使用Niu的回调。
答案 4 :(得分:1)
return $(this).find('option:selected').text();
回调函数中的对我有用:)
答案 5 :(得分:0)
我有类似的问题。我正在使用post to function和loadurl。
通过将var str = settings.target.apply(self, [input.val(), settings]);
修改为var str = settings.target.apply(self, [input.val(), settings, input]);
,我可以控制目标函数中的select元素