JQuery - Как вставить данные в ближайший тд после ввода данных в другой столбец в той же строке (динамически создать строку таблицы с нажатием кнопки) - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь отобразить имя после ввода идентификатора в каждой динамически создаваемой строке таблицы, но имя не отображается в тд. Данные подтверждаются, получают из базы данных.

Я пробовал со стороны здесь, но у меня не получилось как вставить данные в ближайший тд с помощью jQuery?

этоэто способ добавить строку таблицы нажатием кнопки

    var count = 1;
 $('#btnadditem').click(function(){
    count = count + 1;

       var html_code = "<tr id='row"+count+"'>";
       html_code += "<td class='iID'><input type='text' id='itemID' style='width:100px'/></td>";
       html_code += "<td class='iName' colspan='3' style='width:150px'></td>";
       html_code += "<td class='Iqty'><input type='number' id='itemqty' style='width:70px'/></td>";
       html_code += "<td class='iPrc' style='width:80px'></td>";
       html_code += "<td><button type='button' name='remove' data-row='row"+count+"' class='btn btn-danger btn-xs remove' style='width:40px'>-</button></td>";   
       html_code += "</tr>";
       $('#maint').append(html_code);
 })//close function

Эта функция позволяет получить имя, когда id обнаруживает любое изменение

$('#maint').on('keyup','.iID',function(){
    var iic = $('#itemID').val();
    var action = "keyup2";
    $.ajax({method:"POST",
            url:"function/Function_AMain.php",
            dataType:"json",
            data:{"iic":iic,"ActionTaken":action},success: function(data){
                if(data.c == 1)
                {
                    alert(data.a);
                $(this).closest('tr').siblings('td.iName').text(data.a);
                }
            }})

1 Ответ

1 голос
/ 17 октября 2019

Если вы говорите, что получаете ответ от сервера (Ajax), то я подозреваю, что проблема заключается в $(this), поскольку его область действия изменяется внутри функции success.

Кроме того, вы должны использовать функцию find вместо siblings, поскольку td s являются потомками tr, а не братьями и сестрами.

Другое дело, что следует использовать var var iic = $(this).find('input').val() вместо var iic = $('#itemID').val();, как #itemID, будет повторяться несколько раз при каждом нажатии кнопки добавления. Лучше полностью удалить этот атрибут из ввода.

И, наконец, использовать функцию html() вместо text() для установки значения элемента ввода.

Вы можете попробоватьследующее:

var iic = $(this).find('input').val();
.
.
.
var thisObject = $(this); // cache the current this object
$.ajax({
       method:"POST",
       url:"function/Function_AMain.php",
       dataType:"json",
       data:{"iic":iic,"ActionTaken":action},
       success: function(data)
       {
           if(data.c == 1)
           {
               alert(data.a);
               // now use it here
               thisObject.closest('tr').find('td.iName').html(data.a);
           }
       }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...