2012-04-01 114 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 lol – tnanoba 2012-04-01 14:46:40

+0

但在IE中它不起作用,该如何解决? – tnanoba 2012-04-01 14:55:05

+0

使用'console.log(key)'确定发送哪个整数值。我确信在某些浏览器中,代码会有所不同,因为您将离开标准的ASCII范围(0-127)。 – Zeta 2012-04-01 15:09:59