diff --git a/frontend/trainer.html b/frontend/trainer.html
index 971f14b..aebfffc 100644
--- a/frontend/trainer.html
+++ b/frontend/trainer.html
@@ -490,11 +490,11 @@
placeholder="ответ" aria-label="Ваш ответ"/>
-
+
-
+
@@ -705,8 +705,8 @@
if (!(cur && cur.figure && cur.figurePrompt)) { box.style.display = 'none'; box.innerHTML = ''; return; }
box.style.display = '';
box.innerHTML = 'Условие' +
- '' +
- '';
+ '' +
+ '';
}
var topics = (TG.topics ? TG.topics() : [{ key: null, label: 'Задачи' }]).concat([{ key: 'word', label: 'Текстовые задачи', word: true }]);
@@ -906,7 +906,8 @@
var autoLvl = (diffMode === 'auto') ? (' · ур.' + levelOf(curGen)) : '';
el.innerHTML = 'Сложность' + opts.map(function (o) {
var lbl = (o[0] === 'auto') ? ('Авто' + autoLvl) : o[1];
- return '';
+ var on = String(diffMode) === String(o[0]);
+ return '';
}).join('');
}
// общие эффекты «задача решена» (из обычного ответа и из пошагового режима)
@@ -1036,7 +1037,8 @@
var box = $('tr-choices'); if (!box) return;
if (!cur || !cur.choices) { box.innerHTML = ''; return; }
box.innerHTML = cur.choices.map(function (c, i) {
- return '';
+ return '';
}).join('');
}
function submitChoice(idx) {
@@ -1061,7 +1063,7 @@
recordAnswer(false); submitAttempt(false);
revealSolution();
}
- var nx = $('tr-choice-next'); if (nx) nx.style.display = '';
+ var nx = $('tr-choice-next'); if (nx) { nx.style.display = ''; try { nx.focus(); } catch (e) {} }
updateStats();
}
// Текст ответа в фидбеке/раскрытии — по типу задачи.
@@ -1431,6 +1433,19 @@
});
$('tr-choice-next').addEventListener('click', advance);
$('tr-skip').addEventListener('click', newProblem);
+ // Клавиатура: в режиме выбора 1–9 выбирают вариант; после ответа Enter/пробел → «Дальше».
+ document.addEventListener('keydown', function (e) {
+ if (!cur) return;
+ var tag = (e.target && e.target.tagName || '').toLowerCase();
+ if (tag === 'input' || tag === 'textarea' || tag === 'select') return; // не мешаем вводу/полям
+ var isChoice = (cur.kind === 'choice' || cur.kind === 'verify');
+ if (isChoice && !answered && cur.choices && e.key >= '1' && e.key <= '9') {
+ var idx = +e.key - 1;
+ if (idx < cur.choices.length) { e.preventDefault(); submitChoice(idx); }
+ return;
+ }
+ if (answered && (e.key === 'Enter' || e.key === ' ')) { e.preventDefault(); advance(); }
+ });
// ИИ-репетитор: после неверного ответа — разбор ошибки; иначе — наводящая подсказка.
// Опирается на известный ответ + шаги (движок), ИИ только ОБЪЯСНЯЕТ. Недоступен ИИ → решение.
function aiExplain() {