Как найти значение строки определенных данных таблицы в javascript

У меня есть таблица php со значениями. Я хочу, чтобы данные двух таблиц были доступны для редактирования. У меня есть заголовки таблиц Task, Duedate, Staff, Department. Значения td извлекаются из базы данных с помощью laravel eloquent.

<table class = "table table-striped">
                <thead>
                    <tr><th scope = "col">Task</th><th scope = "col">Duedate</th><th scope = "col">Staff</th><th scope = "col">Department</th></tr>
                </thead>
                @foreach($tasks as $task)

                    <input type = "text" id = "taskid" name = "taskid" value = "{{$task->id}}" hidden>

                    <tr class = "tabletd"><td scope = "col" >{{$task->task}}</td>
                        <td scope = "col" contenteditable = "true">
                            <input type = "date" name = "duedate" id = "duedate" class='form-control form-control-sm' value = "{{$task->duedate}}" style = "width:135px;" >
                        </td>

                        <td scope = "col">{{$task->user->name}}</td><td scope = "col">{{$task->department->title}}</td>

            </tr></table>   @endforeach

и я использую ajax для обновления значений на сервере.

$(document).ready(function(){

$(document).on('change','#duedate',function(){
    var duedate=$(this).val();
    var id = $('#taskid').val();
    $.ajax({
        type:'get',
        url:'{!!URL::to('duedateupdate')!!}',
        data:{'id':id, 'duedate':duedate},
        success:function(data){
            document.getElementById("updatemsg").hidden = false; 
            setTimeout( function (){
                document.getElementById("updatemsg").hidden = true; 
            }, 2000);

        },
        error:function(){

        }
    });
});

Работает хорошо. Но обновляет только первую строку таблицы. Как мне обновить значения в других строках.

избегайте использования повторяющихся идентификаторов в html-документе

Aakash Tushar 09.07.2018 17:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
108
2

Ответы 2

Это происходит из-за того, что вы используете идентификатор входа «duedate».

Измените идентификатор на класс

<input type = "date" name = "duedate" class='form-control form-control-sm duedate' value = "{{$task->duedate}}" style = "width:135px;" >

а затем в прослушивателе событий используйте селектор класса:

$(document).on('change','.duedate',function(){

Это должно дать вам желаемый результат

--- отредактируйте после комментария ниже: -----

посмотрите на селектор здесь:
var id = $('#taskid').val();

опять же, вы используете идентификатор (идентификатор всегда будет выбирать только один элемент), вместо этого используйте значение данных во входных данных, например:

<input type = "date" data-task-id = "{{$task->id}}" class = "duedate" class='form-control form-control-sm' value = "{{$task->duedate}}" style = "width:135px;" >

то вы можете использовать это в своем ajax:

var id = $(this).data( 'task-id' );

Я обнаружил, что иногда data () вызывает у меня проблемы, если это произойдет, используйте это:

var id = $(this).attr( 'data-task-id' );

Нет .. Тем не менее он обновляет duedate в первой строке таблицы.

Raja Durai 09.07.2018 17:47

У меня есть код, отредактировавший мой код, как показано ниже, и он хорошо работает

<input type = "date" name = "duedate"  contenteditable = "true" data-id = "{{$task->id}}" data-column = "duedate"  class = "form-control form-control-sm duedate"  value = "{{$task->duedate}}" style = "width:135px;" >


$(document).on('change','.duedate',function(){
    var duedate = $(this).val();
    var id = $(this).data("id");
    $.ajax({
        type:'get',
        url:'{!!URL::to('duedateupdate')!!}',
        data:{'id':id,'duedate':duedate},
        success:function(data){

        },
        error:function(){

        }
    });
});

Другие вопросы по теме