Как я могу узнать, по какой ссылке я нажал? - PullRequest
0 голосов
/ 27 мая 2019

Я развертываю таблицу, где вы можете редактировать столбцы.Для этого в каждой ячейке есть <a>, чтобы показать модальное значение для изменения значения que в базе данных и обновления страницы.Пока он хорошо показывает модальный режим, но на данный момент модальный код не знает, какая ссылка была нажата.Мне нужно знать это, чтобы получить id строки.Метод JQuery, который вызывает последнюю кнопку модального режима ('Guardar'), должен вызвать php-скрипт с помощью AJAX и отправить идентификатор строки (для выполнения оператора UPDATE) и новое значение столбца.

Я пытался использовать методы closest() и find() из JQuery и установить идентификатор строки в атрибуте data-id.

Здесь я развертываю таблицу с помощью PHP (код упрощен до одного столбца, чтобы лучше его понять и понять)

if($resHitos->num_rows>0){
    while ($columna = mysqli_fetch_assoc($resHitos)) {
        $id=$columna['id'];
        echo "<tr data-id='$id'>";
        echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito'>".$columna['descripcion']."</a></p></td>";
        echo "</tr>";
    }
}

Это модальное значение

<div class="modal fade" id="modalEditarHito" role="dialog">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Editar objetivo</h4>
            </div>
            <div class="modal-body">
                <div class="form-group">
                    <label for="newObjetivo">Objetivo</label>
                        <textarea class="form-control" rows="5" id="editObjetivo"></textarea><br>
                 </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal" onclick="editDescripcionHito()">Guardar</button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
            </div>
        </div>
    </div>
</div>

Ожидаемый результат - увидеть новое значение, введенное в точную строку, по которой щелкнули.

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Добавить событие слушателя на ваш модал, когда оно отображается.

$(document).on('show.bs.modal','#modalEditHito', function (e) {
  var $invoker = $(e.relatedTarget);
  //this may help
  //var tr = $invoker.closest('tr');
  //var tr_id = tr.attr("data-id");
});
1 голос
/ 27 мая 2019

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

 echo '<tr data-id=".$columnna['id'].">';

Вы должны изменить эту строку echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito'>".$columna['descripcion']."</a></p></td>";

до

echo "<td style='text-align:center'><p><a data-toggle='modal' data-target='#modalEditHito".$columnna['id']."'>".$columna['descripcion']."</a></p></td>";

...