2012-04-01 96 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