jEditable:提交后显示选项文本(而不是值)

时间:2011-07-03 06:39:48

标签: select jeditable roundtrip

我在选择列表中使用jEditable。它的工作非常精美,除了以下问题。 jEditable显示在提交后服务器发回的任何内容。这适用于文本框等,您只需将提交的值从服务器发回。

但是,这对选择列表没有意义,因为发布的值只是选项元素的Id。如果我将其发回,那么我的文本将更改为Id,而不是之前的友好文本。

如何关闭此行为?我不想再次使用来自DB的提交的Id来获取文本值,只是为了显示目的而将其发回。应该有一种方法来保留选项文本,然后让jEditable在提交后将其放回标签中。帮助

6 个答案:

答案 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'
});

示例:http://jsfiddle.net/william/mT4XV/

答案 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元素