使用jquery排序后,使用jquery更新输入值

时间:2012-12-05 19:11:30

标签: jquery jquery-ui-sortable

我遇到了让一些JS代码工作的问题。我们正在做的是通过拖放对信息表进行排序,然后更新显示所移动项目的排序顺序编号的输入字段以及所有其他项目。

我正在做的一个例子是:http://artmarketnetwork.com/sort_example.html

显然已经坏了,我正在使用jquery sortable,下面的代码是我使用的,可排序的工作,更新其他输入语句的函数的执行不起作用。

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

`

上面的加载调用(“/ attachments / ...”)是得到项目的权重#。它的一个部分只返回一个数字,所以我们知道。的重量。

有没有其他人有过这方面的成功?我有一种感觉很简单,我很想念。

1 个答案:

答案 0 :(得分:1)

我查看了您网站上的标记。 你永远不应该在DOM中重复ID 。用class替换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);
    );


}

注意:

永远不要重复ids!

.load从服务器加载数据并将返回的html注入匹配的DOM元素。简单的$ .get将加载数据而不将其注入DOM。