тип поля ввода текста имеет функцию вызова при нажатии кнопки более одного раза - PullRequest
1 голос
/ 13 июля 2011

функция fb ():

function fb() {    
        $("#Keywordtextbox").keypress(function (event) {
            if (event.keyCode == 13) {
                alert('123');
              //  document.getElementById('AddButton').click();
            }
        });           
} 

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

1 Ответ

2 голосов
/ 13 июля 2011

Вы не должны вызывать fb в onKeyPress И регистрировать событие .keypress jQuery. Делай одно или другое, а не оба! Вы дважды зарегистрировались для участия в ключевых событиях, а затем после первого ключа вы получили тройную регистрацию.

Когда вы получаете ключевое событие, оно вызывает и fb (), и вызывает ваш внутренний обработчик функций для .keyPress. Когда снова вызывается функция fb (), вы снова регистрируетесь на событие нажатия клавиши, и это происходит при каждом нажатии новой клавиши.

Я бы порекомендовал вам избавиться от onkeypress = fb () из HTML.

Затем просто вызовите fb () один раз в коде запуска, чтобы зарегистрировать обработчик события нажатия клавиши. После этого вы должны просто получать одно ключевое событие за нажатие.

Вот рабочий пример: http://jsfiddle.net/jfriend00/Zyftj/

HTML:

<input type="text" id="Keywordtextbox"  maxlength="30" style="width:100px"> 

JS (вызывается в обработчике готовности страницы):

$("#Keywordtextbox").keypress(function (event) {
    if (event.keyCode == 13) {
        console.log("123");
    }
});           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...