jQuery onFocus текстовое поле, затем при вводе отправки

#jquery

#jquery

Вопрос:

Привет, я пытался создать форму отправки jquery ajax, и в настоящее время я пытаюсь установить ограничения для отправки формы. я хочу, чтобы пользователь нажимал enter, чтобы отправить форму, а не нажимал кнопку отправки, но только тогда, когда пользователь фокусируется на текстовом поле / поле ввода, которое он отправит, когда он / она нажмет enter!

я попытался создать свой собственный код и отредактировать его, чтобы посмотреть, что работает, и я разобрался с этим кодом, но он работает не совсем хорошо: (

 $('.addformtextarea').focus(function() {

$(document).keyup(function(e){
    switch (e.keyCode) {
        case 13: //enter
        //code to be 
        break;
    }
});
 

.addformtextarea — это текстовая область, на которой нужно сосредоточиться.

и возвращает false; ведет себя так же, как break; ? потому что у меня есть возвращаемое значение false; прямо перед разрывом;

спасибо: D

Ответ №1:

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

 $(".addformtextarea").keyup(function(e) {
    switch (e.which) {
        case 13: //enter
        //code to be 
        break;
    }
});
 

Обратите внимание, что я использовал which вместо keyCode . Это просто потому, что jQuery нормализует объект события, чтобы устранить любые межбраузерные несоответствия.

Проблема с вашим текущим кодом заключается в том, что после запуска focus события keyup событие привязывается к document и будет срабатывать независимо от того, имеет элемент фокус или нет.

Ответ №2:

Попробуйте это:

 $('textarea').keydown(function(e) {
    if (e.which == 13) {
        alert('You pressed enter');
        // $('your_form').submit();
    }
});
 

Если пользователь вводит текстовую область, разве она не будет сфокусирована? Мне не очень нравится избыточность.

Демонстрация: http://jsfiddle.net/cjTu9/4 /

Ответ №3:

Попробуйте это:

 $('.addformtextarea').keyup(function(e){
    switch (e.keyCode) {
        case 13: //enter
        //code to be 
        return false;
    }
});
 

Вам не нужно беспокоиться о фокусе, потому что ввод будет срабатывать только в том случае, если ввод имеет фокус.

Разрыв только выходит из переключателя, вам нужно вернуть false, чтобы предотвратить автоматическую отправку, если вы делаете это с помощью кода.

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

1. большое спасибо! и спасибо, что ответили на мой 2-й вопрос return false не связан с переключателем / регистром? это хорошая новость 🙂 и теперь это работает: D

2. рассмотрите возможность использования события. который вместо event.keyCode