#javascript #html #jquery
Вопрос:
Я запускаю модал с идентификатором exampleModalCenter
, используя jQuery и Ajax, как показано ниже
$(".phAssignedDetails").click(function() {
var sr = $(this).closest(".card-body").find("input[name='srNum']").val();
var curStage = $(this).closest(".card-body").find("input[name='currentStage']").val();
$.ajax({
type: "POST",
url: "commonFiles/passFailHoldModal.php",
data: {
sr: sr
},
success: function(result) {
$("#exampleModalCenter").modal('show');
$("#currentSubStage").text(curStage);
}
});
});
Модальный код HTML внутри passFailHoldModal.php
, как показано ниже
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Actions</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">amp;times;</span>
</button>
</div>
<div class="modal-body">
<form method="post" id="assignOaForm" name="assignOaForm">
<input type="text" id="tagSerial" name="tagSerial">
<input type="text" id="currentSubStage" name="currentSubStage">
</form>
</div>
</div>
</div>
</div>
Как вы можете видеть, я пытаюсь изменить значение #currentSubStage
переменной curStage
после модального показа. Но это не обновление значения. Может ли кто-нибудь помочь в этом?
Правка 1
Вот кнопка
<button type="button" class="btn btn-outline-dark phAssignedDetails" name="phAssignedDetails" style="margin-right:5px; margin-bottom:5px; float: right;"><i class="fas fa-angle-double-right" style="color:#3CE74E"></i></button>
Комментарии:
1. Первое, что приходит мне в голову, если вы попытаетесь обновить значение поля с помощью: $(«#currentSubStage»).val(curStage); ?
2. Значением
curStage
может быть некоторая строка. Но когда срабатывает модальный режим, поле ввода отображается пустым3. Нам нужно увидеть html для phAssignedDetails
4. Измените $(«#currentSubStage»).текст(curStage); на $(«#currentSubStage»).val(curStage);
5. Я только что сказал вам в комментарии ранее, вы должны попытаться обновить значение поля с
$("#currentSubStage").val(curStage);
помощью успешного обратного вызова ajax
Ответ №1:
text()
это не та функция. Вы не пытаетесь изменить содержимое HTML-элемента, такого как div, а пытаетесь присвоить значение входным данным.
Вот как вы должны это сделать:
$(document).ready(function() {
$(document).on("click", "#container", function() {
var curStage = $("input[name='currentStage']").val();
$("input[name='currentSubStage']").val(curStage);
});
});
html, body {
width: 100%;
height: 100%;
}
#container {
width: 100%;
height: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
<input type="text" name="currentStage" value="foo">
<form method="post" id="assignOaForm" name="assignOaForm">
<input type="text" id="tagSerial" name="tagSerial">
<input type="text" id="currentSubStage" name="currentSubStage">
</form>
</div>
Комментарии:
1. Вы не отвечаете на его вопрос, вы просто показали ему, как обновить значение поля без модального и используя те же идеи, что и в комментариях
2. Ваш код работает. Но, по логике вещей, моя тоже делает то же самое. Дай мне разобраться
3. Тогда почему вы рассматривали это как ответ?
Ответ №2:
Попробуйте выполнить приведенный ниже код.
$(".phAssignedDetails").click(function() {
var sr = $(this).closest(".card-body").find("input[name='srNum']").val();
var curStage = $(this).closest(".card-body").find("input[name='currentStage']").val();
$.ajax({
type: "POST",
url: "commonFiles/passFailHoldModal.php",
data: {
sr: sr
},
success: function(result) {
$("#exampleModalCenter").modal('show');
$("#currentSubStage").val(curStage);
}
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<button type="button" class="btn btn-outline-dark phAssignedDetails" name="phAssignedDetails" style="margin-right:5px; margin-bottom:5px; float: left;"><i class="fas fa-angle-double-right" style="color:#3CE74E"></i></button>
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Actions</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">amp;times;</span>
</button>
</div>
<div class="modal-body">
<form method="post" id="assignOaForm" name="assignOaForm">
<input type="text" id="tagSerial" name="tagSerial">
<input type="text" id="currentSubStage" name="currentSubStage">
</form>
</div>
</div>
</div>
</div>