3

我在选择列表上使用 jEditable。它工作得很好,除了以下问题。jEditable 显示在提交后服务器发回的任何内容。这对于文本框等非常有用,您可以在其中简单地将提交的值从服务器发布回来。

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

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

4

6 回答 6

6

只需在可编辑的配置对象中添加一个回调,如下:

callback: function (value, settings) { 
      $(this).html(settings.data[value]);
 }
于 2012-10-22T13:50:47.823 回答
3

差不多好了。William Niu 的代码有两个问题。首先,您不能以这种方式访问​​可变数据,请改用 settings.data。其次,变量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]);
    }
});
于 2011-08-22T19:48:33.733 回答
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/

于 2011-08-14T15:25:40.377 回答
1

Hammers 代码中的回调函数是正确的,但我在解析数据时遇到了问题:

"JSON.parse: expected property name or '}' "

数据应该是 json-conform,意思是:数据:'{"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 的回调。

于 2012-04-10T19:06:40.900 回答
1
return $(this).find('option:selected').text();

在回调函数中为我工作:)

于 2012-08-03T11:18:16.503 回答
0

我有一个类似的问题。我正在使用 post 来运行和加载 URL。

通过修改var str = settings.target.apply(self, [input.val(), settings]);var str = settings.target.apply(self, [input.val(), settings, input]);我可以控制目标函数中的选择元素

于 2012-04-14T04:40:57.797 回答