В последнее время у меня были проблемы с перезагрузкой страницы во время отправки формы. Наконец-то я обнаружил, что страница перезагружается, когда я отправляю форму с помощью EventListener, но не перезагружается при отправке формы по щелчку. В приведенном ниже коде я это проверил. Может кто-нибудь объяснить мне, почему?
<html>
<head>
<title>Reload Page Test</title>
<script>
document.addEventListener("DOMContentLoaded", function () {
document.querySelector("#asubmit").addEventListener("click", test);
document.querySelector("#bsubmit").onclick = test;
function test(){
const name = document.getElementById("name").value;
const age = document.getElementById("num").value;
document.getElementById(
"result"
).innerHTML = `${name} is ${age}years old.`;
return false;
};
});
</script>
</head>
<body>
<div>
<form>
<input type = "text" id = "name" />
<input type = "number" id = "num" />
<input type = "submit" id = "asubmit" value = "Event Listener Submit"/>
<input type = "submit" id = "bsubmit" value = "On Click Submit">
</form>`enter code here`
</div>
<div id = "result"></div>
</body>
</html>
Спасибо за дополнительные поясняющие ссылки.
Возврат false из функции onclick предотвратит поведение по умолчанию.
Возвращаемое значение обратного вызова прослушивателя событий не имеет смысла.
Вместо этого используйте event.preventDefault()
.
function test(event) {
// ...
event.preventDefault();
}