4

私のアプリでは、ユーザーは jeditable を使用してドロップダウン ボックスからフィールドを更新できます。プログラムがロードされると、この関数を作成して、選択した値を取得し、jeditable で選択した値として設定します。

しかし、値を変更した後、選択したタグは古い値として設定されたままになります。どうすれば新しい値に変更できますか?

これが機能です

function updateType(ID,type){
$(document).ready(function(){

    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  

    data   : " {'copywriting':'Copywriting','design':'Design','code':'Code', 'selected':'"+type+"'}",
    type   : 'select'

    });
});

これはタグのラッパーです。

<span id="tweekType-<?php echo $getTweaksReturned->tweekID; ?>">
<?php type($getTweaksReturned->type); ?>
<script>updateType('<?php echo $getTweaksReturned->tweekID; ?>','<? echo $getTweaksReturned->type; ?>'); </script>
</span> 

同じタグが、新しい変数を返すページに複製されます。

4

5 に答える 5

3

私は同じ問題を抱えていました。ここで与えられた答えは要点ではありません。

とにかく、私はかなりシンプルできちんとした解決策でそれを解決しました:

「選択した」キーと値を追加しないでください。

選択ボックスを開くたびに、セルの値が自動的に...

お役に立てれば。

于 2012-03-22T13:15:48.297 に答える
1

私の場合、値をトリミングする必要がありました。これは謎の空白のせいです。

$('.edit').editable('/xxx/TableRowUpdate', {
...
data: function (value, settings) {
return " {'a':'category a','b':'category b','selected': '" + $.trim(value) + "'}";
},
...

これが役立つことを願っています!

于 2012-02-23T07:50:43.597 に答える
0

現在選択されている値を事前に選択するには、2 つの方法があります。

純粋なクライアント側の場合は、データ関数をオーバーライドできます。

 $('.edit').editable('/xxx/TableRowUpdate', {
   ...
   data: function (value, settings) {
     return " {'a':'category a','b':'category b','selected': '" + value + "'}";
   },
   ...

サーバー側の場合は使用できます

$('.edit').editable('/xxx/TableRowUpdate', { 
     ...    
     loadurl: '/xxx/FileCategoryList',
     loadtype: "POST",
     loaddata: function(value, settings) {
                  return {selectedValue: value};
               },

サーバー側のコード (c# MVC の例) は次のようになります。

public JsonResult FileCategoryList(string selectedValue)
{
  var categories = new Dictionary<string, string>{{"a", "a category"}, {"b", "b category"}, {"selected", selectedValue}};
    return Json(categories, JsonRequestBehavior.DenyGet);
}
于 2011-03-22T00:03:11.107 に答える
0

あなたのコードはかなり非 jQuery のように見えますが、おそらく動作します。Jeditable を各 ID に個別にバインドする理由はありますか? また、関数内で document.ready を呼び出す理由はありますか? スパンにクラスを与えて、クラスにバインドするだけです。

<span class="tweek" id="tweekType-<?php echo $getTweaksReturned->tweekID; ?>">
<?php type($getTweaksReturned->type); ?>
</span>

Jeditable を document.ready (関数ではない) 内にバインドします。select の値がクリックしたテキストと一致する場合、デフォルトで選択されます。デザイン != デザインに注意してください。次のようにします。

$(document).ready(function(){
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  
       data   : " {'Copywriting':'Copywriting','Design':'Design','Code':'Code'}",
       type   : 'select'
    });
});

または、JSON 配列を返す外部 URL からの選択のコンテンツをロードすることもできます。次に、select のテキストと値が一致する必要はありません。

$(document).ready(function(){
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  
       loadurl : "http://www.example.com/select.php",
       type    : 'select'
    });
});
于 2009-07-10T10:51:20.313 に答える
0

私は値をphpスクリプトに送信していませんが、jeditableで別のjavascript関数を呼び出すと、関数から更新される値を返す必要があります:

$(".selector").editable(someFunction, {
    indicator: "Saving...",
    tooltip: "Click to edit...",
    data: " {'3':'3','4':'4','5':'5'}",
    type: 'select',
});

それから:

function someFunction(value, settings) {
  // do some magic
  return(value);
}
于 2009-11-25T19:58:39.073 に答える