2013-03-21 2 views
1

Я использую keypress для отправки при нажатии клавиши ввода. Я сделал JQuery плагин, и мне нужна помощь:Извлечь событие нажатия клавиши

jQuery.fn.enterPress = function(obj, button) {   
      if (e.which == 13) { 
       jQuery(button).click(); 

      }   
    }; 

В этой функции я получить OBJ (HTML формы) и кнопку (которая одна будет нажата).

Я не уверен, но мне, вероятно, не нужен этот «obj». Моя проблема в том, что у меня нет этого 'e'. Я пробовал много способов, но я не знаю, как я могу его извлечь.

Я сделал это:

jQuery('#' + obj.id).keypress(function(e) {} 

Но функция была дважды выстрелил, иногда в три раза.

Благодаря

+0

JQuery уже есть 'keypress' метод, вы могли бы просто используй это. Есть ли причина, по которой вы развиваете свою собственную? – Uby

+0

На самом деле, я хотел чего-то более общего. Как и прохождение атрибутов (в моем случае, идентификатор кнопки. –

ответ

1

JQuery имеет встроенный метод для этого называется нажатием клавиши.

$("#target").keypress(function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    // do stuff here 
    } 
} 

Если вы хотите добавить более общий метод связывания «Enter» событие нажатие на объект JQuery, а затем нажать на кнопку (как вы упомянули в своем вопросе и комментарий), вы могли бы сделать что-то вроде этого :

var $button = jQuery('#somebutton'); 

jQuery.fn.enterPress = function(callback) { 
    jQuery(this).keypress(function(event) { 
     if (event.which == 13) { 
      event.preventDefault(); 
      callback(); 
     } 
    }); 
}; 

$button.click(function(){ 
    alert('button was clicked'); 
}) 

jQuery('#target').enterPress(function() { 
    // what you want to happen after enter is pressed 
    $button.click(); 
}); 

Working Example

+0

Здравствуйте @Cody, я попробовал ваш ответ, предотвращение отказа не сработало. Он не нажал кнопку. также, я попробовал isPreventDefault() и всегда пришел «false». Кроме того, я попробовал e.stopPropagation(), он работал, но срабатывает только при втором нажатии ввода (если страницы загружены с фокусом в поле, и я нажимаю enter). Я поставил предупреждение внутри JQuery. fn.enterPress и всегда запускается, но obj.keypress ... только при втором ударе. –

+0

Эй @viictoorh, я обновил свой ответ вместе с рабочим примером: http://jsfiddle.net/XNKsq/ –

+0

Спасибо @ Коди, это сработало. Я просто внесу некоторые изменения для своего предложения. –

0

Этот код отправляет форму, когда щелкает "13 KEYCODE" == "Enter"

$(document).ready(function(e){ 
    $(document).keypress(function(e){ 
     if(e.keyCode == 13) 
      $("#myFOrm").submit(); 
    }); 
}); 
0

return ключ уже обязан предоставить HTML формы, но вот как вы слушаете на нажатие клавиши события, используя различные методы, в любом случае:

Regular JavaScript:

document.getElementById('yourFormId').addEventListener('keypress', function(e) { 
    if(e.keyCode === 13) 
     document.getElementById('yourButtonId').click(); 
}, false); 

Также регулярный JavaScript:

document.getElementById('yourFormId').onkeypress = function(event) { 
    if(event.keyCode === 13) 
     document.getElementById('yourButtonId').click(); 
}; 

Или JQuery:

$('yourFormId').keypress(function(event) { 
    if(event.which === 13) 
     $('yourButtonId').trigger('click'); 
});