2016-03-21 29 views
-1

Şimdiye kadar hiç şanssız çalışmayı denemeye çalışıyorum. Eğer false değerini kullanırsam; çalışır ancak prevenDefault ile değil, eksik olduğum bir şey var mı? Teşekkür ederim.preventDefault() neden çalışmıyor?

<html> 
<meta http-equiv = "Content-Type" content = "text/html; charset = utf-8"> 
<script> 
function hit(e) { 
e.preventDefault(); 

} 
</script> 

<body> 
<form onsubmit="hit()"> 
    <input type="submit" value="submit" /> 
</form> 
<div id="d"> </div> 
</body> 
</html> 
+0

Sence

'çalışır? Hangi noktada vurmak için bir etkinlik sunuyorsunuz? – zzzzBov

+1

Gösterilen kodda, çalışmak için hit() işlevinin false değerini döndürmesini beklemezdim. – nnnnnn

+0

https://jsfiddle.net/2jdqLvga/ Etkinlik nesnesini iletmeniz gerekiyor. Konsol çıktısına dikkat edin. – gearsdigital

cevap

-4

değiştirme onsubmit

+3

Bunu test ettiniz mi? –

2

onsubmit="hit" olay nesnesi onsubmit olan olay giderici fonksiyonu, birinci bir argümandır. hit, onsubmit'dan aradığınız bir işlevdir ve herhangi bir bağımsız değişken iletmiyorsunuz.

Etkinlik işleyicinizi HTML ile değil JavaScript ile bağlayın.

addEventListener("load", bind_event_handlers); 
function bind_event_handlers(e) { 
    document.querySelector("form").addEventListener("submit", hit); 
    function hit(e) { 
     e.preventDefault(); 
    } 
} 
+0

Olayın otomatik olarak pencereye bağlanmasını sağlamak için 'addEventListener' yazdınız. Sağ? Sadece bir açıklama için. –

+1

@RajaprabhuAravindasamy - Evet. Belgenin 'load' olayının başladığı yer burasıdır. – Quentin

2
satır içi olay işleyicisi açıkça event nesneyi geçmek zorunda

,

<form onsubmit="hit(event)"> 

Ama gibi görevler bu tür özel olay işleyicisi kullanmak için tavsiye edilir,

document.querySelector("form").addEventListener("submit",function(e){ 
    e.preventDefault(); 
},false) 
+1

Aah, olay nesnesini kaçırıyordum, buna rağmen denedim, 'etkinlik' yerine 'e' kullandım. Teşekkürler, beni köprüden atlamaktan vazgeçtin. – user3311392

+0

@ user3311392 Yardım etmekten memnun oldum! :) –

1

Ayrıca, formu göndermeyi önlemek için onsubmit içinde dönüşü kullanabilirsiniz:

<script> 
function hit() { 
return false; // Use 'true' to submit the form 

} 
</script> 

<body> 
<form onsubmit="return hit();"> 
    <input type="submit" value="submit" /> 
</form> 
<div id="d"> </div> 
+0

Ben gerçekten bu soruyu göndermeden önce başarıyla yaptım, sadece preventDefault() kullanmayı bilmek istedim. Teşekkürler. – user3311392

+0

Elbette! Yani @Quentin ve Rajaprabhu Aravindasamy cevaplar bu durumda doğrudur. İyi şanslar! – nikoskip