Javascript не работает в Firefox и IE, но работает в Chrome - PullRequest
1 голос
/ 19 мая 2011

Я занимаюсь разработкой HTML-страницы со многими текстовыми полями, такими как идентификатор пользователя и имя пользователя. Я добавил код javascript, подобный этому, в отдельный файл .js

function CommonKeyPressIsAlpha(evt){
    var charCode = (evt.which) ? evt.which : event.keyCode
    if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123)){
        document.getElementById("errordisp").innerHTML = "";
        return true;
    }else{
        document.getElementById("errordisp").innerHTML = "Please enter a valid name!";
        return false;
    }
}

Всякий раз, когда пользователь вводит текст в поле имени пользователя, я вызываю эту функцию для проверки того, что пользователь вводит только символы. Я вызываю эту функцию в текстовых полях имени пользователя:

onkeypress="return CommonKeyPressIsAlpha(evt);"

Он отлично работает в Chrome, но не в Firefox и IE. В чем проблема?

Ответы [ 2 ]

3 голосов
/ 19 мая 2011

Вам нужно передать event в обработчик в вашем атрибуте onkeypress:

onkeypress="return CommonKeyPressIsAlpha(event);"

Это работает во всех основных браузерах, но основано на использовании event вместо evt в атрибуте,Я писал о деталях того, как это работает на SO до .

2 голосов
/ 19 мая 2011

Ваш код полагается на ошибку Chrome, когда анонимная функция, скомпилированная для встроенного обработчика событий (onkeypress в вашем случае), имеет один аргумент с именем evt в Chrome.Спецификация требует, чтобы этот аргумент был назван event.См. http://code.google.com/p/chromium/issues/detail?id=80912

Решение заключается в использовании onkeypress="return CommonKeyPressIsAlpha(event);"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...