Как решить проблему при редактировании текстового поля на месте с помощью jquery, когда таблица динамическая

Я сгенерировал динамические таблицы, которые будут генерировать список строк и столбцов таблиц. Если я дважды щелкну по определенному столбцу, то этот конкретный тд должен быть доступен для редактирования на месте. На месте редактирования работает нормально. Но когда я дважды щелкаю и обновляю значение, все значения столбца обновляются. Мне нужно обновить конкретное значение, в частности тд.. Вот мой код. В этой функции get возвращает 10 статусов, поэтому я назначен таблице. Я хочу редактировать любое значение из 10. Если я редактирую сейчас. Его обновили во всех 10 статусах. Пожалуйста, кто-нибудь, помогите мне

ОБНОВЛЕНО:(не работает на месте редактирования)

    <html>
    <head><Title>In place editing of dynamic tables</title>
    </head>
    <body>
    <div id="body"></div>
    </body>

    </html>
    <script>

                $(document).ready(function(){
    var x;
    x=0;
                var table='<table>';
                    table += '<tr><th style=""> Status</th></tr>';
                    table += '</table></br>';

                $("#body").append(table);
                var $tbody = $('<tbody>').appendTo('#body table:last');
                $.ajax({
                type : 'POST',
                url : '@routes.Application.get()',
                data : {
                itemupc : item[0]
                },
                beforeSend:function()
                {   

                }, 
                success : function(items) {

                $.each(items, function(j, itemsdetails) {



           if(itemsdetails[3]=="R")
x++;
                $tbody.append('<tr><td  id="myid"'+x+'" class="editableTD">0</td></tr>');
}
                                    });     

           $("#item_content").on('dblclick','.editableTD',function(e){ //assign event to editableTD class
                e.stopPropagation();
                var currentID=$(this).attr("id"); //grab the current id instead
                var currentValue= $(this).html();
                inlineEditSave(currentID,currentValue);
            });
            function inlineEditSave(currentElement,currentValue)
                {
                //$(currentElement).html('<i class="fa-li fa fa-spinner fa-spin"></i>');
                    $(currentElement).html('<input type="text" class="thVal" value="' + currentValue + '" />');
                    $(".thVal").focus();
                    $(".thVal").keyup(function (event) {
                        if (event.keyCode == 13) {
                            $(currentElement).html($(".thVal").val().trim());

                        }
                    });

                });

        </script>

1 ответ

Вот проблема:

if(itemsdetails[3]=="R")
$tbody.append('<tr><td id="myid">0</td></tr>');

все ваши новые элементы имеют одинаковый идентификатор, вам нужно что-то вроде этого

if(itemsdetails[3]=="R")
{
    x++;
    $tbody.append('<tr><td id="myid'+x+' class='editableTD'">0</td></tr>'); //dynamic ids
}

затем

$("#item_content").on('dblclick','.editableTD',function(e){ //assign event to editableTD class
            e.stopPropagation();
            var currentID=$(this).attr('id'); //grab the current id instead
            var currentValue= $(this).html();
            inlineEditSave(currentID,currentValue);
}); 
Другие вопросы по тегам