как остановить нажатие кнопки при нажатии Enter - PullRequest
0 голосов
/ 21 ноября 2010

Я использую эту функцию для обработки нажатия кнопки ввода в текстовом поле поиска, но она запускает еще одну кнопку на странице, как остановить эту кнопку и вызвать мою функцию поиска ().

InputKeyPress(e) {
    if (window.event) {
        if (event.keyCode == 13) {
            search();
        }
    } else {
        if (e) {
           if (e.which == 13) {
               search();
           }
        }
    }
 }

Ответы [ 2 ]

1 голос
/ 21 ноября 2010

Вам необходимо добавить «return false» следующим образом:

function InputKeyPress(e) {
    if (!e)
        e = window.event;
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        return false;
    }

    return true;
}

, а также изменить вызов из текстового поля на следующее:

<input .... onkeypress="return InputKeyPress(event);" ...>

То есть не просто вызвать функцию, а"вернуть" его.

1 голос
/ 21 ноября 2010

В случае keyCode == 13 необходимо предотвратить действие по умолчанию для события keypress.Стандартный способ сделать это - вызвать функцию preventDefault для объекта события (если он есть; в более ранних версиях IE это не так).Более старый способ - вернуть false из вашей функции обработчика событий.Там нет никакого реального вреда в подходе "пояса и брекетов", делая оба.: -)

Вы также можете немного сократить свою функцию:

function InputKeyPress(e) {
    var keyCode;

    e = e || window.event;
    keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        if (e.preventDefault) {
            e.preventDefault();
        }
        return false;
    }
}
...