【发布时间】:2019-03-09 10:38:56
【问题描述】:
我有一个由 AJAX 调用填充的级联下拉菜单,它按预期工作。但是,当我提交表单并刷新页面时,所选值会重置。我希望能够在提交表单和刷新页面时在其下拉框中保留所选值。
我已经在 Stack Overflow 上找到了几种解决方案,但似乎找不到一个显示如何从动态填充选项的表单中维护所选值的解决方案。
我的 HTML 和 JS 在下面。
<form method="get" class='d-print-none' id='gameForm' team-ids-url={% url 'ajax_load_teamids' %} game-ids-url={% url 'ajax_load_gameids' %} novalidate>
<div class="input-group">
<select class="custom-select" id="inputTeamId" name="inputteamid"></select>
<select class="custom-select" id="inputGameId" name="inputgameid"></select>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit" value="submit" onclick="loading();">Run</button>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function() {
var url = $("#gameForm").attr("team-ids-url");
$.ajax({
url: url,
success: function(data) {
$("#inputTeamId").html(data);
}
});
});
$("#inputTeamId").change(function() {
var url = $("#gameForm").attr("game-ids-url");
var selected_teamid = $(this).val();
localStorage.setItem("SelectedTeamId", selected_teamid);
$.ajax({
url: url,
data: {
'selected_teamid':selected_teamid
},
success: function (data) {
$("#inputGameId").html(data);
}
})
})
</script>
【问题讨论】:
-
«当我提交表单并刷新页面时...» -- 寻找localStorage。
-
当您提交表单时,所有选定的值都将丢失,因为它们打算通过 HTTP 传输。您需要将值存储在本地或从它们的存储位置(SQL)收集它们并在页面加载时填充字段。如果您使用服务器端脚本,此脚本可以为您执行此操作。如果没有,您将需要收集值并使用 jQuery 填充表单。
标签: javascript jquery html ajax