2012-10-04 18 views
5

Mam trudny czas z keydown i zatrzymać propagacjajQuery spust() i stopPropagation() na keyDown

nie chcę moją stronę do odświeżenia, próbowałem każdy jaki sposób mogę myśleć, mój obecny kod to

<script> 
$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER }); 

$('#id_number').trigger(e, function(event){ 
event.preventDefault(); 
event.stopPropagation(); 
}); 

}); 
</script> 

jakikolwiek pomysł na to, co robię źle tutaj? Myślałem, że wydarzenie zostało nazwane poprawnie, mam jQuery i jQuery UI połączone prawidłowo i odbierać żadnych błędów konsoli

UPDATE dobrze to działa, teraz im coraz nieruchomość „zdarzenie” funkcji obiektu (a, b) {return new e.fn.init (a, b, h)} nie jest funkcją błąd na poniższym kodzie

$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER } , function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$('#id_number').trigger(e); 

}); 

Aktualizacja # 2 - stałe

rzeczy nauczyłem

  1. spust() nie są potrzebne w dokumencie (gotowy)
  2. coraz $ .ui.keyCode do pracy było trudne (przynajmniej dla mnie)
  3. zawsze zobaczyć, jakie inne funkcje są dołączone do wejścia (onblur, onfocus, ect) aka doh

przepisał go do tego, działa perfekcyjnie

$(document).ready(function() { 
    $('#id_number').keydown(OnKeyDown); 
});  

function OnKeyDown(e){ 
var code = (e.keyCode ? e.keyCode : e.which); //to support both methods 
if(code == 13) { //the Enter keycode 

    //my actions 
return false; 
} 
} 
+0

Próbowałaś 'zwraca FALSE? – TheZ

+0

Dlaczego uważasz, że funkcja 'event' (*, którą musisz zmienić na' Event' z kapitałem E *) zajmuje 3 argument? zgodnie z dokumentami wymaga to tylko dwóch argumentów. Pierwszy to typ zdarzenia, a drugi to obiekt z właściwościami zdarzenia. –

+0

, ponieważ myślałem głupie? zdezorientowany, przykro mi, że twoja odpowiedź była słuszna, po prostu nie mogłem go uruchomić dopóki nie przepisałem kodu –

Odpowiedz

7

Kod zatrzymać domyślną akcję należy przejść do elementu, że zdarzenie dotyczy ..

$('#id_number').keydown(function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

.trigger() sekund argument jest dla extraParameters

+0

dziękuję, umieszczenie stopPropagation i preventDefault na zdarzeniu keydown zadziałało, zaktualizowałem moje pytanie z odpowiedzią, wielkie dzięki, piękne –

Powiązane problemy