Нажатие на элемент кнопки, к которому прикреплен прослушиватель событий, обновляет страницу - PullRequest
0 голосов
/ 30 мая 2018

У меня проблема с моей функцией, в этой скрипке

window.addEventListener("load", init, false);

function init() {
  let naam = document.getElementById("naam").addEventListener("blur", checkNaam, false);
  let startKnop = document.getElementsByTagName("button")[0].addEventListener("click", startClicked, false);
}

function checkNaam(event) {
  const regEX = /^\d[A-Z]{2}\d{1,}K$/;
  let naam = document.getElementById("naam");
  let knop = document.getElementsByTagName("button")[0];

  if (regEX.test(naam.value)) {
    knop.removeAttribute("disabled");
    knop.setAttribute("enable");
  }
}

function startClicked(event) {
  let knop2 = document.getElementById("keuze1");
  knop2.removeAttribute("disabled");

  let knop3 = document.getElementById("keuze2");
  knop3.removeAttribute("disabled");

  toonVraag();
}

function toonVraag(event) {
  let vraag = document.getElementById('vraag');
  vraag.innerHTML = "Hallo";

}
body {
  font-family: sans-serif;
  font-size: large;
}

form {
  text-align: center;
}

button {
  width: 300px;
  height: 100px;
  font-size: large;
}

form div {
  margin: 2em;
}

#verslag {
  display: none;
  position: absolute;
  top: 100px;
  left: 100px;
  background-color: lightgray;
  opacity: 0.9;
  padding: 3em;
  box-sizing: border-box;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Examen p5</title>
  <script src="scripts/examen.js.pdf.js"></script>
  <script src="scripts/afblijven.js"></script>
  <link rel="stylesheet" href="style/style.css">
</head>

<body>
  <form>
    <div>
      <h1>Enquêtetool</h1>
      <p>Geef eerst een correcte code in: start met een cijfer, dan 2 hoofdletters, vervolgens 1 of meerdere cijfers en de code eindigt met een K. Druk dan op start om de enquête te starten...</p>
      <label for="naam">Code: </label><input type="text" id="naam" />
    </div>
    <button disabled>Start</button>
    <div>
      <p id="vraag">Een vraag</p>
      <button id="keuze1" disabled>Keuze1</button>
      <button id="keuze2" disabled>Keuze2</button>
    </div>
  </form>
  <section id="verslag">
    <h1>Overzicht antwoorden</h1>
    <table>

    </table>
  </section>
</body>

</html>

Код, который вы должны ввести:

1KK1K

Моя проблемаявляется то, что как только обработчик слушателя вызывается:

function startClicked(event) {
    let knop2 = document.getElementById("keuze1");
    knop2.removeAttribute("disabled");

    let knop3 = document.getElementById("keuze2");
    knop3.removeAttribute("disabled");

    toonVraag();
}

, он автоматически обновляет страницу (обратно к значению по умолчанию).

Примечание: я не могу изменить HTML напрямую, он должен пройти через JavaScript.

1 Ответ

0 голосов
/ 30 мая 2018

Элемент button действует так, как если бы он был формой, поэтому его обновление.

Вы можете исправить это в JavaScript или HTML:

JavaScript:

  • добавьте event.preventDefault() в начало вашего обработчика кнопки, чтобы кнопка не выполняла «действие по умолчанию», или

HTML:

https://jsfiddle.net/g1Ljjgc7/2/ - обновленная версия вашей скрипки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...