Я могу успешно прочитать мою выбранную строку таблицы для моего всплывающего модального, но если я собираюсь переместить мою кнопку на динамическое чтение строки таблицы из javascript, все мои поля станут пустыми или не будут читать выбранную таблицу.
Здесь мой Javascript, который строит мою строку таблицы вместе с обновлением кнопки для вызова всплывающего модального:
$.get("/Home/GetItem", function (data) {
tempDIM = JSON.parse(data);
if (tempDIM[0]["status"] == "SUCCESS") {
for (var i = 1; i < tempDIM.length - 1; i++) {
$("#TableBody").append("<tr>" +
"<th scope='row'>" + (i + 1) + "</th>" +
"<td id='" + tempDIM[i]["id"] + "'>" + tempDIM[i]["id"] + "</td>" +
"<td>" + tempDIM[i]["name"] + "</td>" +
"<td>" + tempDIM[i]["address"] + "</td>" +
"<td>" + tempDIM[i]["age"] + "</td>" +
"<td>" + tempDIM[i]["status"] + "</td>" +
'<td><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Update</button></td>' +
"</tr > ");
}
}
});
Modal:
<table class="table" style="margin-top:10px">
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>address</th>
<th>age</th>
<th>status</th>
</tr>
</thead>
</table>
<table class="table table-striped" id="tBody">
<tbody id="TableBody"></tbody>
</table>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-target="#exampleModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"><b>Update Selected Details</b></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>id:</label>
<input type="text" id="id" disabled />
</div>
<div class="form-group">
<label>name :</label>
<input type="text" id="name" disabled />
</div>
<div class="form-group">
<label>address :</label>
<input type="text" id="address" disabled />
</div>
<div class="form-group">
<label>age:</label>
<input type="text" id="age" disabled />
</div>
<div class="form-group">
<label>status:</label>
<input type="text" id="status" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" id="btnSave" onclick="SaveChanges()" class="btn btn-primary" data-dismiss="modal">Save changes</button>
</div>
</div>
</div>
</div>
И мой сценарий для чтения таблицы:
$(function () {
$(".btn").click(function () {
var $row = $(this).closest("tr"), // Finds the closest row <tr>
$tds = $row.find("td"); // Finds all children <td> elements
$("#id").val($row.find('td:eq(0)').text())
$("#name").val($row.find('td:eq(1)').text())
$("#address").val($row.find('td:eq(2)').text())
$("#age").val($row.find('td:eq(3)').text())
$("#status").val($row.find('td:eq(4)').text())
});
});
Любое предложение или комментарии, по которым я получаю нулевое значение из моего всплывающего мода. ТИА
Предположим, что ваша таблица содержит правильные данные, $(".btn").click()
Обработчик события $(".btn").click()
кажется неправильным, потому что вы можете вызывать другую кнопку с class="btn"
вне строки таблицы (т.е. <button type="button" id="btnSave"...>
). Вы должны обработать событие show.bs.modal
из exampleModal
вместо этого, затем итерации элементов строки и поместить все значения в соответствующие элементы <input>
упорядоченные индексом столбца, как пример ниже:
$("#exampleModal").on('show.bs.modal', function (e) {
var $button = $(e.relatedTarget);
var $row = $button.closest("tr");
var $tds = $row.find("td");
$.each($tds, function(i, value) {
$("input:eq(" + i + ")").val($(this).text());
});
});
Примечание. Если вы хотите отправлять текстовые значения внутри модального кода, избегайте использования disabled
атрибута, который предотвращает readonly
вместо этого используйте readonly
например: <input type="text" id="id" readonly="readonly"/>
.
Рабочий пример (упрощенный): .NET Fiddle
Связанный выпуск:
Нажмите кнопку в строке таблицы и покажите значения в модальном окне.
$.each()
вместоJSON.parse
и циклаfor
JSON.parse
ответа. В какой части вы получаете нулевое значение?