#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();
});