請人幫助一個非常絕望和疲倦的新手。我到處尋找答案,但無濟於事。的JavaScript event.keyCode不上的keydown,按鍵或KEYUP事件在Firefox 3.6.25工作
我想捕捉鍵代碼/則charCode測試回車鍵是否被按下(我一直在使用的keydown,但我不是隻要我得到的東西的工作大驚小怪)。我已經嘗試了所有可以想到的解決方案,並且在IE,Safari,Chrome和Opera中運行正常,但是不支持FireFox 3.6.25(最新版本)?我知道事件肯定是觸發的,因爲我可以從我調用的函數中顯示一個簡單的警告框,但是爲了聲明一個變量來保存event.keyCode的內容,完全是另一回事!
我窗體的代碼基本上是...
<form method="post" name="giftaidform" onsubmit="javascript:return validateForm();" action="../scripts/form-to-email.php">
<table width="500" border="0" align="center" cellpadding="5" cellspacing="0">
<tr>
<td width="180" align="right">Forename:</td>
<td align="left"><input name="forename" type="text" size="30" maxlength="30" onfocus="javascript:setUnchecked(this);" onkeydown="javascript:testForEnter(this);" onblur="javascript:isValidName(this);"></td>
</tr>
等等...
至於我的 「testForEnter」 功能...
function testForEnter(obj) {
// store code of key that was pressed
var keyCode = obj.keyCode;
alert(keyCode);
// if the enter key was pressed then prevent default action
if (keyCode == 13) {
if(event.preventDefault) event.preventDefault();
event.returnValue = false;
}
}
我有嘗試過各種其他的配方,包括obj.charCode和下面的東西?!
function checkKey(evt) {
var keyID = (window.event) ? window.event.keyCode : event.which;
alert(keyID);
}
在FireFox中什麼都不起作用!
沒有什麼工作,因爲你指定的參數'evt'而不是'event'。在你的代碼中,'window.event'和'event'都指的是'window.event',它在Firefox中不存在。你應該首先使用'var event = window.event ||來規範事件事件;'。最新的Firefox是'9',而不是'3.6'。還要注意,當你從你的內聯事件處理函數調用一個函數時,如果你想訪問它,你必須傳遞'event'對象給它。 – 2011-12-22 22:59:33
您在「onfoo」處理程序字符串的開頭不需要「javascript:」。 – Pointy 2011-12-22 23:00:21
@FelixKling你是一個傳奇!我現在已經通過了'事件'並整理出了我的狡猾代碼和完美的工作 - 更不用說升級到了Firefox 9的版本(不知道我是如何安裝舊版本的)! – Dougie 2011-12-22 23:19:45