@dintear_koden

В чем ошибка? Почему не происходит переадресация?

Почему-то вместо переадресации на другую страницу, (т.е на thanks.html) появляется значок ? в адресной строке.

index.html
<form class="send-message" onsubmit="return validate_form()">
				<div class="flexbox spcbtn message-content">
					<div class="flex center your-date column">
						<div class="error error-name">
							error
						</div>
						<p class="your"><input type="text" class="fields your-name" placeholder="Как к вам обращаться?" id="yourName"></p>
						<div class="error error-mail">
							error
						</div>
						<p class="your"><input type="email" class="fields your-mail" placeholder="Ваша почта:"></p>
					</div>
					<div class="flex center column your-date-message">
						<div class="error error-message">
							error
						</div>
						<textarea class="your-message" placeholder="Ваше сообщение:"></textarea>
					</div>
				</div>
				<div class="flex center submit-btn">
					<input type="submit" class="submit-message" value = 'отправить'>
				</div>
			</form>

main.js
var form = document.querySelector('.send-message')
var buttonForm = form.querySelector('.submit-message')
var yourName = form.querySelector('.your-name')
var yourMail = form.querySelector('.your-mail')
var yourMessage = form.querySelector('.your-message')
var errorName = form.querySelector('.error-name')
var errorMail = form.querySelector('.error-mail')
var errorMessage = form.querySelector('.error-message')

function validate_form ( ) {
	valid = true;

	// Проверка заполненности поля Ваше имя
	if ( yourName.value == "" ) {
		errorName.classList.add('active')
		valid = false;
	}
	else {
		if (errorName.classList.contains('active')) {
			errorName.classList.remove('active')
		}
	}

	// Проверка заполненности поля Ваша почта
	if ( yourMail.value == "" ) {
		errorMail.classList.add('active')
		valid = false;
	}
	else {
		if (errorMail.classList.contains('active')) {
			errorMail.classList.remove('active')
		}
	}

	// Проверка заполненности поля Ваше собщение
	if ( yourMessage.value == "" ) {
		errorMessage.classList.add('active')
		valid = false;
	}
	else {
		if (errorMessage.classList.contains('active')) {
			errorMessage.classList.remove('active')
		}
	}

	if (valid == true) {
		window.location.href = 'thanks.html'
	}

	return valid;
}
  • Вопрос задан
  • 190 просмотров
Решения вопроса 2
@strelok011
добавьте переопределение submit для вашей формы. По клику на кнопку submit браузер игнорирует js и обрабатывает по стандарту отправку формы.

используйте что-то вроде
function mySubmitFunction(e) {
  e.preventDefault();
  someBug();
  return false;
}


или

function mySubmit(e) { 
  e.preventDefault(); 
  try {
   someBug();
  } catch (e) {
   throw new Error(e.message);
  }
  return false;
}
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Потому что форма отправляется на текущую страницу. Да ещё и ничего не отправляет.
Мой вам совет:
Выбросьте ваш JS. Сделайте то что вы хотите исключительно средствами html. И уже мотом, если очень нужно, можно добавить немножно CSS
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы