Mengapa "return false" tidak berfungsi?
pentingnya: 3
Kenapa pada kode dibawah return false tidak berfungsi sama sekali?
<script>
function handler() {
alert( "..." );
return false;
}
</script>
<a href="/?originalUrl=https%3A%2F%2Fid.javascript.info%2F%26quot%3Bhttps%3A%2F%2Fw3.org%26quot%3B%2520onclick%3D%26quot%3Bhandler()%26quot%3B%26gt%3Bbrowser%2520akan%2520membuka%2520w3.org%26lt%3B%2Fa%26gt%3B%253C%2Fcode">
browser akan mengikuti URL yang di klik, tapi kita tidak mau hal itu terjadi.
Bagaimana cara memperbaikinya?
Pada saat browser membaca atribut on* seperti onclick, browser akan membuat sebuah penangan (handler) dari kontennya.
Untuk onclick"handler()" fungsinya akan menjadi:
function(event) {
handler() // konten dari onclick
}
Sekarang kita bisa melihat bahwa nilai yang dikembalikan oleh handler() tidak digunakan dan tidak mempengaruhi hasilnya.
Cara memperbaikinnya mudah:
<script>
function handler() {
alert("...");
return false;
}
</script>
<a href="/?originalUrl=https%3A%2F%2Fid.javascript.info%2F%26quot%3Bhttps%3A%2F%2Fw3.org%26quot%3B%2520onclick%3D%26quot%3Breturn%2520handler()%26quot%3B%26gt%3Bw3.org%26lt%3B%2Fa%26gt%3B%253C%2Fcode">
Kita juga bisa menggunakan event.preventDefault(), seperti ini:
<script>
function handler(event) {
alert("...");
event.preventDefault();
}
</script>
<a href="/?originalUrl=https%3A%2F%2Fid.javascript.info%2F%26quot%3Bhttps%3A%2F%2Fw3.org%26quot%3B%2520onclick%3D%26quot%3Bhandler(event)%26quot%3B%26gt%3Bw3.org%26lt%3B%2Fa%26gt%3B%253C%2Fcode">