2012-12-03 70 views
0

如果用戶按enter鍵,它應該表現爲他按esc鍵。如何分配新的ASCII鍵控代碼值

function OnEditorKeyPress(editor, e) { 
    if (e.htmlEvent.keyCode == 13) { 
     e.htmlEvent.keyCode = 27; 
     //treeList.CancelEdit(); 
    } 
} 

但是在這個說明中e.htmlEvent.keyCode = 27;之後值13仍然保持不變。如何分配一個新的值或任何其他替代方法是否有這樣做?

+1

我不會在一個網頁,其中弄亂我的鍵盤訪問,請不要嘗試。 – Teemu

+0

爲什麼你會想要做類似的東西..你不覺得這會混淆你的網站的用戶...? –

+1

這就是爲什麼這個屬性是隻讀的原因;) –

回答

2

事件對象的這些屬性是隻讀(包括KeyCode),所以你不能做的事情,例如。爲什麼你不能做這樣的事情?

function OnEditorKeyPress(editor, e) { 
    //If user press enter or escape 
    if (e.htmlEvent.keyCode == 13 || e.htmlEvent.keyCode == 27) // correct comparison operation 
    { 
     treeList.CancelEdit(); 
     e.htmlEvent.preventDefault 
    } 
} 

編輯:如果你堅持,在Mozilla的論壇閱讀:Need to override key pressed replacing keycode

+1

湯姆是正確的。這種方法比較好,也不要忘了'e.htmlEvent.preventDefault();''CancelEdit'後防止Enter'或'Esc'的'任何默認行爲。 –

+0

是的,我忘了'preventDefault()'...檢查! –

+0

@TomSarduy,我通過你參考鏈接使用「_cancelEvent(事件)」功能accompolished我的目標。謝謝。 – User1674987

0

嗨這段代碼可以幫助您在停止「Enter」鍵。然而,你可以輸入你的代碼做任何你想要的,當用戶按下「確認」鍵的默認功能。儘管在ENTER上實現ESC功能不會被理解。

這裏是工作示例http://jsfiddle.net/Z4dgr/11/

<!DOCTYPE html> 
<html> 
<body> 
<script type="text/javascript"> 
function displayunicode(e){ 
e.preventDefault(); 
var unicode=e.keyCode? e.keyCode : e.charCode 
alert(unicode) 
} 
</script> 
<form> 
Enter from keyboard <input type="text" size="2" maxlength="1" onkeypress="displayunicode(event); this.select()" /> 
</form> 
</body> 
</html>​ 
0

據此間湯姆的回答是你所需要的。

function OnEditorKeyPress(editor, e) { 
    //If user press enter or escape 
    if (e.htmlEvent.keyCode == 13 || e.htmlEvent.keyCode = 27) 
    { 
     treeList.CancelEdit(); 
     e.htmlEvent.preventDefault(); 
    } 
} 
+0

我試着用'e.htmlEvent.preventDefault()'。它工作正常,但我使用'_cancelEvent(事件)'functon來實現我的目標。謝謝。 – User1674987