Не удается заблокировать ключи с помощью прослушивателя событий - PullRequest
0 голосов
/ 17 августа 2010
<body id="body" runat="server" onkeydown="return showKeyCode(event)">

Теперь, когда я нажимаю клавишу, IE8 (или в режиме компа) выдает исключение, указывающее на проблему в строке x, которая является тегом моего тела.Как я могу предотвратить это?Насколько мне известно, JS-код должен быть с IE comp.(работает в Chrome) Более того, код не работает в IE и Firefox (он не блокирует F5 и Enter)

-> Ожидаемый объект

var version = navigator.appVersion;

function showKeyCode(e) {
    var keycode = (window.event) ? event.keyCode : e.keyCode;

    if ((version.indexOf('MSIE') != -1)) {
        if (keycode == 13) {
            event.keyCode = 0;
            event.returnValue = false;
            return false;
        }
    }
    else {
        if (keycode == 13) {
            return false;
        }
    }
}

ДругойПроблема, с которой я сталкиваюсь, связана с этим простым JS в IE & FF (работает в Chrome):

Ничего не происходит & -> Ожидается объект

 <a onclick="ClearTextboxes();" title="Close" id="close" runat="server">Close</a>

....in script tags:
 function ClearTextboxes() {
     document.getElementById('<%= txtbox_name.ClientID %>').value = '';
     document.getElementById('<%= txtbox_email.ClientID %>').value = '';
     document.getElementById('<%= txtbox_content.ClientID %>').value = '';
     document.getElementById('<%= ResultMail.ClientID %>').style.display = 'none';

 }

1 Ответ

2 голосов
/ 18 августа 2010

В вашей функции showKeyCode много ненужного кода.Следующее будет так же хорошо;вы уже гарантировано, что e будет ссылаться на объект ключевого события, потому что вы передаете event в атрибуте тела onkeydown, и нет никакой необходимости в прослушивании браузера вообще.return false - это правильный способ предотвратить действие браузера по умолчанию при использовании обработчика ключа DOM0, поэтому нет необходимости в e.returnValue.

У вас будут проблемы с блокировкой F5, и если у вас нет серьезных причинне должен делать это в любом случае, так как пользователь привык выполнять обновление страницы.Если вы измените функцию на следующую, то нет причин, по которым она не должна препятствовать действию клавиши Enter по умолчанию:

function showKeyCode(e) {
    if (e.keyCode == 13) {
        return false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...