Почему onkeydown не работает должным образом на IE? - PullRequest
1 голос
/ 26 марта 2010
function checkEnter(event) {
    var charcode;
    if (event && event.which) {
        charcode = event.which;
        alert("Case 1. event.which is " + charcode);
    }

    else if (event && !event.which) {
        charcode = event.keyCode;
        alert("Case 2. event.keyCode is " + charcode);
    }

    document.getElementById("text1").value="";
}

<input type="text" id="text1" onkeyup="checkEnter(event)" />

Данная функция работает как в IE7, так и в Chrome.

function checkKeyPressed() {
    document.onkeydown = function(event) {
        var charcode;
        if (event && event.which) {
            charcode = event.which;
            alert("charcode is " + charcode);
        }

        else if (event && !event.which) {
            charcode = event.keyCode;
            alert("charcode (keyCode) is " + charcode);
        }
    }
}

<input type="button" id="button1" onclick="checkKeyPressed(event)" value="Button" />

Однако этот работает только в Chrome. Есть идеи почему?

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Вы можете объединить их, просто проверив, является ли параметр неопределенным.

function MyOnClick(oEvent)
{
  if (typeof(oEvent) == "undefined")
     oEvent = event;

  // continue with your code
}

Это будет работать для Firefox, Chrome, IE и т. Д.

0 голосов
/ 27 марта 2010

Хорошо, проблема решена. Очевидно, все, что вам нужно сделать, это удалить параметр "event" из onkeydown (). Я думаю, это потому, что IE не читает javascript, как это делает Chrome, поэтому он не работает должным образом, потому что не передается параметр. =. =

...