2012-04-01 27 views
0

ここでは単純な状況があります。顔のHTMLコードをすることができます最初の=>onkeyupイベントのチェックボックス

<form name="geoKey" method="post" action="index.php"> 
<fieldset class="gKey"> 
     <legend><input type="checkbox" name="checkUncheck" id="checkUncheck"></legend> 
     <textarea name="txt" id="txt" cols="34" rows="5"></textarea> 
</fieldset> 
</form> 

、ここではJavaScriptので=>

function keyPress(e){ 
    var key; 
    var box = document.getElementById("checkUncheck"); 
    if (window.event){ 
     key = event.keyCode; 
    } else { 
     key = e.which; 
    } 
    if (key==192){ 
     (box.checked) ? box.checked=false : box.checked=true; 
    } 
} 

window.onload = function(){ 
    document.onkeyup = keyPress; 
}; 

、あなたはチェックボックスがチェックされ、それがキー(192番)に押されて、みんなを見るようにそれがチェックされていない場合(これはうまく動作します)しかし、ここでは問題です=>カーソルがtextareaにフォーカスしていて、textareaのそのキー(192)を押しても何も書き込まれないようにしたいと思います。 、助ける代わりに

答えて

1

使用onkeydown :)感謝とe.preventDefaultを使用して、デフォルトのブラウザのアクションを防ぐください

function keyPress(e){ 
    var key; 
    var box = document.getElementById("checkUncheck"); 
    if (window.event){ 
     key = event.keyCode; 
    } else { 
     key = e.which; 
    } 
    if (key==192){ 
     e.preventDefault(); // <-- prevent default action 
     (box.checked) ? box.checked=false : box.checked=true; 
     return false; 
    } 
} 

window.onload = function(){ 
    document.onkeydown = keyPress; 
}; 

JSFiddle demo

+0

感謝の男:)、私はpreventDefault()関数がjQueryの笑でしかないと思った – tnanoba

+0

しかし、IEではそれを解決する方法はありません? – tnanoba

+0

'console.log(key)'を使用して、どの整数値を送るかを決定します。私は、標準のASCII範囲(0-127)を残しているので、コードがいくつかのブラウザで異なると確信しています。 – Zeta

関連する問題