3

Select リストで jEditable を使用しています。次の問題を除いて、それは美しく機能します。jEditable は、送信後にサーバーがポストバックしたものを所定の位置に表示します。これは、サーバーから送信された値を単純にポストできるテキスト ボックスなどに最適です。

ただし、これは選択リストでは意味がありません。投稿される値は単にオプション要素の ID であるためです。それを投稿すると、テキストが以前のわかりやすいテキストではなく Id に変更されます。

この動作をオフにするにはどうすればよいですか? 表示目的でポストバックするためだけに、DB から送信された Id を使用してテキスト値を再度フェッチする必要はありません。オプション テキストを保持し、サブミット後に jEditable でラベルに戻す方法が必要です。ヘルプ?

4

6 に答える 6

6

これを使用して、編集可能な構成オブジェクトにコールバックを追加するだけです。

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

もうすぐです。William Niu のコードには 2 つの問題がありました。まず、この方法では変数データにアクセスできません。代わりに 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]);
    }
});
于 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 である必要があります。つまり、 data :'{"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

私も同様の問題を抱えていました。関数とloadurlにpostを使用しています。

に変更var str = settings.target.apply(self, [input.val(), settings]);するvar str = settings.target.apply(self, [input.val(), settings, input]);ことで、ターゲット関数のselect要素を制御できました

于 2012-04-14T04:40:57.797 に答える