Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Отправка сообщений по нажатию на клавишу Enter (https://javascript.ru/forum/css-html/50459-otpravka-soobshhenijj-po-nazhatiyu-na-klavishu-enter.html)

opiums 26.09.2014 23:21

Отправка сообщений по нажатию на клавишу Enter
 
Доброго времени, уважаемые форумчане, есть такая форма:
$('#send_btn').click(function(){
            var msg = $("input[name='msg']").val();
			
            if(msg.length > 0 && msg.length <= 256){
                $("input[name='msg']").val('');
                addMSG(user_nick, msg);

                $.ajax({
                    type: "POST",
                    url: ajax_url,
                    data: {
                        req_type: 'send_msg',
                        nick: user_nick,
                        msg: msg
                    },
                    success: function(res){
                        last_id = res;
                    }
                });
            }
        });

и html:
<div id="user_input">
        <input type="text" name="msg" maxlength="256" placeholder="Введите Ваше сообщение" />
        <button id="send_btn">Отправить</button>
    </div>


Не могу добавить отправку сообщений по нажатию на клавишу Enter, не могли бы вы мне помочь с этим делом?
Пытался добавить код:
$( "#target" ).keydown(function( event ) {
  if ( event.which == 13 ) {
   event.preventDefault();
  }
  var msg = $("input[name='msg']").val();
  $.print( msg, "html" );
  $.print( event );
});

после $('#send_btn').click(function():
$( "#target" ).keydown();

но ничего не получилось, подскажите как сделать отправку сообщений через клавишу enter, не убирая кнопку "отправить"?

CiliZ 01.10.2014 12:06

function sendForm() {
    var msg = $("input[name='msg']").val();
    if (msg.length > 0 && msg.length <= 256) {
        $("input[name='msg']").val('');
        addMSG(user_nick, msg);

        $.ajax({
            type: "POST",
            url: ajax_url,
            data: {
                req_type: 'send_msg',
                nick: user_nick,
                msg: msg
            },
            success: function (res) {
                last_id = res;
            }
        });
    };
};

$('#send_btn').click(sendForm);
$("input[name='msg']").keydown(
    function (event) {
        if (event.keyCode == 13) {
            sendForm();
        }
    }
);

danik.js 01.10.2014 12:42

Почему бы не использовать для этих целей <form>? Тогда отправка без всяких скриптов будет по Enter. И слушаем событие submit.

Можно пойти дальше и прописать фолбэк атрибут action, параметры передавать скрытыми полями и вот наша форма умеет работать без всяких скриптов.

opiums 05.10.2014 05:48

CiliZ,
спасибо большое, получилось, разобрался

danik.js,
есть много способов, в другом чате попробую без скриптов сделать :)


Часовой пояс GMT +3, время: 11:53.