2009-05-30 6 views
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> 

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

答えて

0

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

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

とdocument.ready内部内部それに結合Jeditable(ない機能)。選択したテキストに一致する値が選択されている場合は、デフォルトで選択されます。デザイン!=デザインに注意してください。

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

それとも、代わりに返し、JSON配列外部URLからの選択の内容を読み込むことができますような何かを行います。あなたが値を返す必要がjeditableと別のJavaScript関数を呼び出すときから更新されるように私はPHPスクリプトに値を提出していない

$(document).ready(function(){ 
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", { 
     loadurl : "http://www.example.com/select.php", 
     type : 'select' 
    }); 
}); 
0

をしかし:次に、テキストと選択の値が一致する必要はありませんその機能:その後、

$(".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); 
} 
0

現在選択された値を事前に選択する方法は2つあります。

それは純粋なクライアント側である場合は、データの関数をオーバーライドすることができます

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

それはサーバ側である場合は(#MVC例c)は、サーバー側のコードが見える

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

を使用することができますlike

public JsonResult FileCategoryList(string selectedValue) 
{ 
    var categories = new Dictionary<string, string>{{"a", "a category"}, {"b", "b category"}, {"selected", selectedValue}}; 
    return Json(categories, JsonRequestBehavior.DenyGet); 
} 
1

私の場合、値をトリミングする必要がありました。これは神秘的な空白のためです。

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

これは役に立ちます。

3

私は同じ問題がありました。ここで与えられた答えは、それほど重要ではありません。

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

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

あなたはそれがセルの値に自動的だ選択ボックスを開くたび...

は、この情報がお役に立てば幸いです。

+0

これは機能します。どうも。 – HorseloverFat

+0

私は何時間もこの答えを探していましたが、これは完璧に働きました。 – seaofinformation

関連する問題