2009-08-05 8 views
12

Chcę tylko wyłączyć klucz Enter na klawiaturze. Poniższy skrypt blokuje całą klawiaturę z jakiegoś powodu, z tym że nadal pozwala na użycie tylko klawisza Enter.Wyłącz klawiaturę <enter> klucz

Jeśli pomaga to wskazać, czego brakuje lub co jest nie tak, używam V.S. 2005, VB.NET 2.0 i I.E. 7.

<meta http-equiv="content-type" content="text/html; charset=windows-1252"> 

<head> 
    <meta http-equiv="content-type" content="text/html; charset=windows-1252"> 

    <script language="JavaScript"> 
    function TriggeredKey(e) 
    { 
     var keycode; 
     if (window.event) keycode = window.event.keyCode; 
     if (window.event.keyCode = 13) return false; 
    } 
    </script> 
</head> 
<body onkeydown="TriggeredKey(this)"> 
+0

odpowiedź może być w tym samym, ale pytanie nie powielać. – Light93

Odpowiedz

39

Jeśli masz jQuery, spróbuj tego:

$('html').bind('keypress', function(e) 
{ 
    if(e.keyCode == 13) 
    { 
     return false; 
    } 
}); 
+0

Możesz też naprawić swój kod za pomocą odpowiedzi Jasona. Po prostu wolę jQuery. –

+0

Dzięki za opcję alternatywną. – Cameron

+0

Wolę tę odpowiedź i podoba mi się fakt, że można zamienić "html" na bardziej szczegółowy selektor, aby umożliwić bardziej celowe wyłączenie klawisza Enter (lub innego klawisza). –

20

Twój = prawdopodobnie powinien być == (porównanie vs. przypisanie)

if (window.event.keyCode == 13) return false; 
+0

Dobry połów, tęskniłem za tym! –

+0

Próbowałem tego również i przycisk "enter" nadal nie jest wyłączony, chociaż reszta klawiatury jest użyteczna, podczas gdy większość kluczy była wcześniej zablokowana. Czy może istnieć nieznane ustawienie sieciowe powodujące tę niezgodność? Nie znam JavaScriptu, ale wydaje mi się, że powinien być prosty i bezpośredni. – Cameron

+2

@Cameron - przepraszam, że jest to kilka lat spóźnienia ... musisz podać instrukcję return, kiedy określisz program obsługi zdarzenia, aby przekazać zwróconą wartość z powrotem do systemu zdarzeń: –

2

Użyłem tego kodu z powodzeniem.

function handleKeypress(e){ 

    e = e || window.event ; 
    if (e == null){ 
     return false; 
    } 

    if (e.keycode == 13){ 
     CompleteEvent(e); 
    } 
} 

function CompleteEvent(e){ 
    e.cancelBubble = true; 
    e.returnValue = false; 
} 

Również bardzo polecam korzystanie z nowej formy ustawienia haka dla javascript.

function setKeyHook() 
{  
    var eventName = 'onkeydown'; 
    var handlerFunc = handleKeypress; 


    body.detachEvent(eventName, handlerFunc);    

    body.attachEvent(eventName, handlerFunc); 

} 

onload = setKeyHook; 

Powodzenia.

Aby uzyskać więcej informacji, niż chciałeś, zobacz stronę this question. Kudos do Peter Bailey za nauczanie mnie.

+0

Mimo że nie mogłem jeszcze uruchomić tej funkcji, czy brakuje tam {tagu? Dzięki za kod! Będę dalej grać z tym. Wydaje się, że coś innego w moim kodzie lub środowisku nie gra ładnie. – Cameron

+0

Tak, było. Naprawiłem to. Przepraszam za to. –

+0

W drugiej części uważam za zabawne, że aby uniknąć pisania 'document.onkeydown = handler', kończysz pisanie' window.onload = handler'! (wiesz, że 'onload =' naprawdę oznacza 'this.onload =' i 'this', tutaj jest obiektem' window'). Poza tym, dzięki za kod. – FrancescoMM

0

To zadziałało dla mnie. Skrypt

<meta http-equiv="content-type" content="text/html; charset=windows-1252"> 

<head> 
<meta http-equiv="content-type" content="text/html; charset=windows-1252"> 

<script language="JavaScript"> 
function TriggeredKey(e) 
{ 
    var keycode; 
    if (window.event) keycode = window.event.keyCode; 
    if (window.event.keyCode != 13) return false; 
} 
</script> 
</head> 
<body onkeydown="TriggeredKey(this)"> 
+1

Po prostu odwróciłeś to, błąd był w rzeczywistości = = – GroundZero

+0

@GroundZero Dziękuję za poprawienie mojego błędu i oświecenia javascript. Mój błąd wynika z błędnego założenia, że ​​wszystkie polecenia w wierszu 'return false' line były dołączone.Sposób, w jaki testowałem kod, polegał na przełączeniu 'return false;' z 'return false; alert ("!"); '. Jednak dodatkowe polecenie było najwyraźniej uważane za oświadczenie Else. –

0
<script type="text/javascript"> 

function stopRKey(evt) { 
    var evt = (evt) ? evt : ((event) ? event : null); 
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
    if ((evt.keyCode == 13) && (node.type=="text")) {return false;} 
} 

document.onkeypress = stopRKey; 

</script> 

add między

Powiązane problemy