2010-10-02 20 views
7

anahtar alanı gibi presleri ve okları müdahale sırasında. Ben başarıyla böyle koduyla dönüş, uzay ve okları yakalamak:Durdurma sayfa ben JavaScript ve prototip kullanarak ve kullanıcıdan anahtar presler biniyorum

Event.observe(window, "keyup", function(e) { 
    switch (e.keyCode) { 
    case Event.KEY_RETURN: 
    case Event.KEY_RIGHT: 
    case 32: // space 
     // do something 
     break; 
    } 
}); 

Benim sorunum alanlarda ve ok sayfasını kaydırma devam olmasıdır. Sayfaları kaydırmasını engellemenin bir yolu var mı? the Prototype documentation itibaren

+0

"@" gösterimi kullanılarak size bildirmek için en iyi yolu nedir? @ J.Pablo veya @JPablo? Herhangi bir fikri olan nedir? – brainjam

+0

@brainjam Sadece kullanıcı adını kopyalayıp yapıştırın. Sanırım aslında, sadece ismin ilk kısmına dikkat ederek, bu alana kadar sadece @J. çalışırdı. Ya da yaptığınız gibi soruya yorum yapmak hile yapar. – JAL

+0

@Alex, bence en az 3 karakter gerekli. Bkz. Http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work/43020#43020 – brainjam

cevap

5

:

Event.stop (event)
Etkinliğin yayılmasını durdurur ve sonunda tetiklenmesini onun varsayılan eylemi engeller.

break; sorununuzu çözümlemeden önce Event.stop(e); eklenmesi gerekir.

Ayrıca, keydown olay için bunu yapmalısınız, çünkü keyup çok geç.

+0

Bu, Firefor veya Chrome'da çalışmadı. Belki bir şey özlüyorum – Pablo

+0

@ J.Pablo, Sadece keyup olayını gözlemlediğinizi fark ettim. Keydown ve tuşa basma olaylarını gözlemlemeyi deneyin ve orada Event.stop'u (e) kullanın. Aksi halde, muhtemelen tarayıcıya geçiyorlar. – brainjam

+0

keypress işe yaramadı (olay olmasaydı herhangi bir etkisi yoktu), keydown beklediğim gibi çalıştı. Teşekkürler. – Pablo

6

Varsayılan tarayıcı işlemini engellemek için keyup yılında çok geç.

Event.observe(document, "keydown", function(e) { 
    switch (e.keyCode) { 
    case Event.KEY_RETURN: 
    case Event.KEY_RIGHT: 
    case 32: // space 
     // do something 
     Event.stop(e); 
     break; 
    } 
}); 
+1

Olay döngüsünde 'keyup'un çok geç olduğu konusunda iyi bir fikir. –

7

Kullanım e.preventDefault() tarayıcısı

+2

Bu durumda geçerli olduğuna emin olmadı –

+1

Andrew Barber: öyle. Uygulamada 'preventDefault' tek ihtiyacınız olan şeydir ve tarayıcıda kaydırma yapmak varsayılan bir davranış olduğundan, teoride bu soruna en doğru çözüm olarak görünmektedir. –

+0

Benim için çalışan tek şey (FF26). Anahtar olayında kullandım. – Zdenek

0

e.preventDefault() Chrome'da çalışır varsayılan davranışını Stop: Bunun yerine keydown durumunda bunu musunuz ve Prototype'ın Event.stop yöntemini kullanır.