Полностью готовый код для замены (фрагменты JS)
1) Замени функцию calculateSegment на эту:
function calculateSegment(amount) {
var growth = ['до 490 000', 'от 500 000 до 990 000'];
return growth.indexOf(amount) !== -1 ? 'growth' : 'vip';
}
2) Добавь эту функцию перед finishQuiz():
function redirectToThankYou() {
sessionStorage.setItem('quizThankYouType', state.segment);
if (state.telegram) {
sessionStorage.setItem('quizTelegram', state.telegram);
}
if (state.niche) {
sessionStorage.setItem('quizNiche', state.niche);
}
if (state.lastLaunchAmount) {
sessionStorage.setItem('quizLastLaunchAmount', state.lastLaunchAmount);
}
window.location.href = '/thank-you.html';
}
3) Полностью замени sendToTilda() на эту версию:
function sendToTilda() {
var form = getForm();
if (!form) return false;
form.querySelectorAll('[required], [data-tilda-req]').forEach(function(el) {
el.removeAttribute('required');
});
var gp = growthPotential(state.lastLaunchAmount);
var weakPts = getWeakPoints(state.answers);
var fields = {
telegram: state.telegram ? '@' + state.telegram : '',
niche: state.niche || '',
role: state.role === 'producer' ? 'Продюсер' : state.role === 'expert' ? 'Эксперт' : '',
subscribers: state.subscribers || '',
coverage: state.coverage || '',
project_link: state.projectLink || '',
last_launch_amount: state.lastLaunchAmount || '',
segment: state.segment || '',
result_min: gp.min || '',
result_max: gp.max || '',
traffic_readable: formatList('traffic', state.answers.traffic || []),
base_readable: formatList('base', state.answers.base || []),
entry_readable: formatList('entry', state.answers.entry || []),
warmup_readable: formatList('warmup', state.answers.warmup || []),
converters_readable: formatList('converters', state.answers.converters || []),
sales_readable: formatList('sales', state.answers.sales || []),
push_readable: formatList('push', state.answers.push || []),
weak_points: weakPts.join(' | '),
quiz_summary: buildQuizSummary()
};
Object.keys(fields).forEach(function(name) {
var input = form.querySelector('[name="' + name + '"]');
if (input) {
input.value = fields[name];
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
input.dispatchEvent(new Event('blur', { bubbles: true }));
} else {
console.warn('⚠️ Не найдено поле:', name);
}
});
console.log('📤 Отправляем в Tilda:', fields);
var redirected = false;
function handleSuccessRedirect() {
if (redirected) return;
redirected = true;
redirectToThankYou();
}
form.addEventListener('submit', function() {
setTimeout(handleSuccessRedirect, 1200);
}, { once: true });
setTimeout(function() {
var submitBtn = form.querySelector('button[type="submit"], .t-submit, input[type="submit"]');
if (submitBtn) {
submitBtn.click();
} else {
form.submit();
setTimeout(handleSuccessRedirect, 1200);
}
}, 300);
return true;
}
4) Полностью замени finishQuiz() на эту:
function finishQuiz() {
state.segment = calculateSegment(state.lastLaunchAmount);
try {
sendToTilda();
} catch (e) {
console.error('❌ Ошибка отправки формы:', e);
}
}
5) Если thank you страница лежит по другому адресу, замени в redirectToThankYou():
window.location.href = '/thank-you.html';
например на:
window.location.href = '/kviz-thanks';
6) Если хочешь, чтобы и на thank you странице была доп.проверка, можешь использовать это:
function normalizeThankYouType() {
var storedType = sessionStorage.getItem('quizThankYouType');
var lastLaunchAmount = sessionStorage.getItem('quizLastLaunchAmount') || '';
if (
lastLaunchAmount === 'до 490 000' ||
lastLaunchAmount === 'от 500 000 до 990 000'
) {
return 'growth';
}
if (
lastLaunchAmount === 'от 1 000 000 до 1 990 000' ||
lastLaunchAmount === 'от 2 000 000 до 2 990 000' ||
lastLaunchAmount === 'от 3 000 000 до 4 990 000' ||
lastLaunchAmount === 'от 5 000 000 до 9 990 000' ||
lastLaunchAmount === '10 000 000+'
) {
return 'vip';
}
return storedType || 'growth';
}
И тогда на thank you странице вместо:
const thankYouType = sessionStorage.getItem('quizThankYouType') || 'growth';
используй:
const thankYouType = normalizeThankYouType();