1

一部の JS コードを動作させるのに問題があります。私たちが行っているのは、ドラッグ アンド ドロップで情報のテーブルを並べ替えてから、移動したアイテムの並べ替え順序番号を表示している入力フィールドと他のすべてのアイテムを更新することです。

私がやっていることの例はここにあります: http://artmarketnetwork.com/sort_example.html

明らかに壊れています。私はjqueryソート可能を使用しています。以下のコードは私が使用しているものです。ソート可能は機能しますが、他の入力ステートメントを更新する関数の実行は機能していません。

$(document).ready(function(){
    $("#AttachmentWeight").live("change keyup", function() {
        $("#UserDashboardWeightForm").submit();
    });     

    $(".tablesorter tbody").sortable({ 
        opacity: 0.6, 
        cursor: 'move', 
        update: function() {
            $('table#summary tbody tr:odd').removeClass('alt-row');
            $('table#summary tbody tr:even').addClass('alt-row');
            var order = $(this).sortable("serialize"); 
            $.post("/attachments/sortable/", order);
                            updateInputs();
        }                                 
    });

});

function updateInputs() {
    $("#AttachmentWeight").each(function() {
        var aid = $(this).attr('rel');
        alert(aid);
        var weight = $(this).load("/attachments/getWeight/" + aid);
        alert(weight);
        $(this).val(weight);
    });
}

`

上記の load("/attachments/...") の呼び出しは、アイテムの重量 # を取得しています。数値のみを返すセクションなので、の重みがわかります。

他の誰かがこれで成功しましたか? 私が見逃しているのは非常に単純なものだと感じています。

4

1 に答える 1

1

あなたのサイトのマークアップを調べました。DOM で id を複製してはいけません。id をクラスに置き換えます。

<input name="data[Attachment][0][weight]" type="text" value="1" rel="3334" style="width:30px;" class="AttachmentWeight">


function updateInputs() {
    var attachments = $(".AttachmentWeight").each(
         var $this = $(this),
             id = $this.attr("rel"),
             setWeight = function(value){
                $this.val(value);
             };
         $.get("/attachments/getWeight/" + id).done(setWeight);
    );


}

ノート:

ID を重複させないでください。

.loadサーバーからデータをロードし、返された html を一致する DOM 要素に挿入します。単純な $.get は、データを DOM に挿入せずにロードします。

于 2012-12-05T19:24:06.353 に答える