Рассмотрим следующий код: https://jsfiddle.net/Twisty/5p2yg034/
HTML
<form method="get" class="d-print-none" id="gameForm" data-team-url="./teams" gdata-game-url="./games">
<div class="input-group">
<select class="custom-select" id="inputTeamId" name="inputteamid">
<option></option>
<option value="t1">Team 1</option>
<option value="t2">Team 2</option>
<option value="t3">Team 3</option>
</select>
<select class="custom-select" id="inputGameId" name="inputgameid">
<option></option>
<option value="g1">Game 1</option>
<option value="g2">Game 2</option>
<option value="g3">Game 3</option>
</select>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit" value="submit" onclick="loading();">Run</button>
</div>
</div>
</form>
Здесь следует обратить внимание на использование атрибутов data
, чтобы впоследствии вы могли использовать .data()
в jQuery.
JavaScript
$(function() {
function loadData() {
var fd = localStorage.getItem("fd");
if (fd != null) {
return JSON.parse(fd);
}
return false;
}
function saveData(fd) {
localStorage.setItem("fd", JSON.stringify(fd));
}
function get(item) {
if (item == undefined) {
item = "team"
}
var url;
switch (item) {
case "team":
url = $("#gameForm").data("team-url");
$.get(url, function(r) {
$("#inputTeamId").val(r);
});
break;
case "game":
url = $("#gameForm").data("game-url");
$.get(url, {
'selected_teamid': $("#inputTeamId").val()
}, function(r) {
$("#inputGameId").val(r);
});
}
saveData({
'inputTeamId': $("#inputTeamId").val(),
'inputGameId': $("#inputGameId").val()
});
}
function loading(e) {
e.preventDefault();
saveData({
'inputTeamId': $("#inputTeamId").val(),
'inputGameId': $("#inputGameId").val()
});
// Loading script
}
function init() {
var formData = loadData();
if (formData) {
$.each(formData, function(i, d) {
$("#" + i).val(d);
});
} else {
get("team");
}
}
$("#inputTeamId").change(function() {
get("team");
});
$("#gameForm").submit(loading);
init();
});
В этом примере используется localStorage
для быстрого сохранения значений формы. Функции можно легко настроить для использования файлов cookie или отправки их на сервер для хранения. Это зависит от ваших потребностей.
Если форма содержит базовые данные, сбор данных в объект будет простым и полезным для хранения. Мы можем хранить только строковые данные в localStorage
, поэтому мы можем использовать JSON.stringify()
для преобразования объекта в строку, которую мы можем проанализировать позже.
Когда страница загружается, мы можем попытаться загрузить данные. Если нет контента localStorage
, он попытается получить команду. Если есть данные, они установят эти данные в элементах формы по идентификатору.
В вашем скрипте вы можете собирать URL, используя $("#gameForm").data('team-url')
и $("#gameForm").data('game-url')
. Если ваша форма усложняется, вы можете рассмотреть возможность использования GET для данных из одного скрипта с передачей ему элемента.
Надеюсь, это поможет.