#html #forms #submit #action
#HTML #формы #Отправить #Экшен
Вопрос:
У меня интересная ситуация, поскольку я создаю HTML-форму, выводимую непосредственно в Google Sheet (подробнее здесь:https://github.com/jamiewilson/form-to-google-sheets ). Однако действие моей формы не перенаправляется, поскольку страница просто остается неизменной при нажатии кнопки отправки. Таблица Google записывает ввод, но на веб-странице не делается указание. Я хотел бы перенаправить на совершенно другую страницу.
Я заметил, что это распространенный вопрос, но все остальные ответы либо а) перенаправляют и не отправляют ответ пользователя, либо б) отправляют ответ, но без перенаправления.
Заранее спасибо.
const scriptURL = 'https://script.google.com/macros/s/AKfycbyoQPDaaR1YTUFjkU7weJ_Y9uCTE7hoOK_5yUQVjE8EjVuEIRBh/exec'
const form = document.forms['submit-to-google-sheet']
form.addEventListener('submit', e => {
e.preventDefault()
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message))
})
<!doctype html>
<html>
<head></head>
<body>
<form name="submit-to-google-sheet" action="https://www.google.com">
<input name="email" type="text" placeholder="insert text">
<input id="submit" name="submit" type="submit" value="Submit">
</form>
</body>
</html>
Ответ №1:
Например, как насчет этой модификации? Если событие может быть отменено, preventDefault()
используется для отмены события. В вашей ситуации я хотел бы предложить 2 шаблона.
Простой шаблон:
Как насчет простого изменения, как насчет удаления e.preventDefault()
?
От:
form.addEventListener('submit', e => {
e.preventDefault()
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message))
})
Для:
form.addEventListener('submit', e => {
fetch(scriptURL, { method: 'POST', body: new FormData(form)})
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message));
})
Другой шаблон:
В качестве другого шаблона, если вы хотите перенаправлять только тогда, когда fetch()
не возвращает ошибки, как насчет следующей модификации? В этом случае action="https://www.google.com"
of <form name="submit-to-google-sheet" action="https://www.google.com">
не используется.
Пример сценария:
form.addEventListener('submit', e => {
e.preventDefault();
fetch(scriptURL, {method: 'POST', body: new FormData(form)})
.then(response => {
console.log('Success!', response);
window.location.href = "https://www.google.com";
})
.catch(error => console.error('Error!', error.message));
});
Ссылка:
Если это был не тот результат, который вы хотите, я приношу извинения.
Комментарии:
1. @charleshawk Спасибо за ваш ответ. Я рад, что ваша проблема была решена.