Создание привязки действует как кнопка отправки. Не просто с помощью события щелчка

#jquery

#jquery

Вопрос:

Что-то подобное будет работать только тогда, когда пользователь нажимает на привязку. Но форма также отправляется, когда пользователь нажимает клавишу [enter] внутри формы. Как я мог бы иметь ту же функциональность, используя только привязку?

     $('a.submit').click(function() {
    $(this).closest('form').submit();
}); 
  

Спасибо.-

РЕДАКТИРОВАТЬ (с решением):

Эта комбинация работает (по крайней мере) в FF и Chrome! либо щелкните привязку с помощью класса submit, либо нажмите [enter].

     $('#my_form a.submit').click(function(e) {
    e.preventDefault();
    $(this).closest('form').submit();
}); 

$('#my_form').keydown(function(e) {
    if (e.keyCode != 13)
        return;
    $(this).submit();
}); 
  

Спасибо за ваши комментарии!

Комментарии:

1. Не могли бы вы уточнить, что вам нужно? Вы пытаетесь заставить код запускаться при отправке формы с помощью клавиши ввода? Если это так, вы можете захотеть взглянуть на обработчики onsubmit even. В противном случае я не уверен, что вам нужно…

2. @chris Нет, я хочу отправить форму с этим якорем. AFAIK, для запуска действия отправки требуется кнопка отправки или изображения (щелчок или нажатие [enter]).

3. Ах да. Для нажатия enter может потребоваться наличие кнопки. У меня такое чувство, что для этого не требуется, чтобы кнопка была видимой, поэтому попробуйте добавить фиктивную и установить для ее видимости значение false или display значение none с помощью CSS и посмотреть, поможет ли это вообще. Хотя вполне могут быть лучшие способы сделать это…

4. @chris Я попробую это. Я пытался привязать прослушиватель клавиши [enter] к событию нажатия клавиши поверх формы.

5. @chris работает в FF, но не в Chrome, к тому же в обоих случаях мешает событию щелчка привязки!

Ответ №1:

Необходимо предотвратить запуск привязки событием щелчка:

 $('a.submit').click(function(event) {
    event.preventDefault();
    $(this).closest('form').submit();
}); 
  

Ответ №2:

После нескольких тестов это отлично работает:

 $('#my_form a.submit').click(function(e) {
    e.preventDefault();
    $(this).closest('form').submit();
}); 

$('#my_form').keydown(function(e) {
    if (e.keyCode != 13) // Enter or Return keystroke
        return;
    $(this).submit();
});