fix: harden twenty four game submissions

This commit is contained in:
2026-08-09 03:30:31 +08:00
parent b1ac6cef86
commit ce7bed5f19
4 changed files with 90 additions and 3 deletions
+10 -1
View File
@@ -143,6 +143,13 @@
input.placeholder = "例如:6 / (1 - 3 / 4)";
input.autocomplete = "off";
input.inputMode = "text";
input.spellcheck = false;
const errorMessage = document.createElement("p");
errorMessage.className = "form-error game-form-error";
errorMessage.setAttribute("role", "alert");
input.addEventListener("input", () => {
errorMessage.textContent = "";
});
const keypad = document.createElement("div");
keypad.className = "game-keypad";
["+", "-", "*", "/", "(", ")"].forEach((operator) => {
@@ -159,10 +166,11 @@
submit.className = "primary-button";
submit.type = "submit";
submit.textContent = "验证并计分";
form.append(input, keypad, submit);
form.append(input, keypad, errorMessage, submit);
form.addEventListener("submit", async (event) => {
event.preventDefault();
submit.disabled = true;
errorMessage.textContent = "";
try {
const result = await api(
`contests/games/attempts/${attempt.attempt_id}/submit/`,
@@ -175,6 +183,7 @@
renderTwentyFour(result);
showToast("得到 24,成绩已记录");
} catch (error) {
errorMessage.textContent = error.message;
showToast(error.message);
submit.disabled = false;
}