zpět k lekci

Proč nefunguje „return false“?

důležitost: 3

Proč v následujícím kódu vůbec nefunguje return false?

<script>
  function handler() {
    alert( "..." );
    return false;
  }
</script>

<a href="https://w3.org" onclick="handler()">prohlížeč přejde na w3.org</a>

Prohlížeč po kliknutí pokračuje na URL, ale to my nechceme.

Jak to opravit?

Když prohlížeč načte atribut on*, např. onclick, vytvoří handler z jeho obsahu.

Pro onclick="handler()" funkce bude:

function(událost) {
  handler() // obsah atributu onclick
}

Nyní vidíme, že hodnota, kterou vrátí handler(), není použita a nemá vliv na výsledek.

Oprava je jednoduchá:

<script>
  function handler() {
    alert("...");
    return false;
  }
</script>

<a href="https://w3.org" onclick="return handler()">w3.org</a>

Můžeme také použít událost.preventDefault() následovně:

<script>
  function handler(událost) {
    alert("...");
    událost.preventDefault();
  }
</script>

<a href="https://w3.org" onclick="handler(event)">w3.org</a>