отправить данные по клику - jquery ajax chat - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть чат jquery со скриптом

var name = "Guest";
    name = name.replace(/(<([^>]+)>)/ig,"");
    var chat =  new Chat();
    $(function() {
         chat.getState();
         $("#sendie").keydown(function(event) {
             var key = event.which;
             if (key >= 33) {
                 var maxLength = $(this).attr("maxlength");
                 var length = this.value.length;
                 if (length >= maxLength) {
                     event.preventDefault();
                 }
              }
              });
         $('#sendie').keyup(function(e) {
              if (e.keyCode == 13) {
                var text = $(this).val();
                var maxLength = $(this).attr("maxlength");
                var length = text.length;
                if (length <= maxLength + 1) {
                    chat.send("testtext", name);
                    $(this).val("");
                } else {
                    $(this).val(text.substring(0, maxLength));
                }
              }
         });
    });

структура html:

<body onload="setInterval('chat.update()', 1000)">

    <div id="page-wrap">

        <h2>jQuery/PHP Chat</h2>

        <p id="name-area"></p>

        <div id="chat-wrap"><div id="chat-area"></div></div>

        <form id="send-message-area">
            <p>Your message: </p>
            <textarea id="sendie" maxlength = '100' ></textarea>
            <button id="submit">submit</button>
        </form>

    </div>

</body>

Это сообщение отправки (или сохранения в файл), когда я нажимаю клавишу ENTER послемое сообщение.Я заменил данные текстовой области на testtext.Я хочу отправлять данные, когда нажимаю кнопку submit.

Как я могу это сделать ??

Я пытаюсь изменить это пример .. Если у кого-нибудь есть решение, пожалуйста, дайте мне знать .. Я пытаюсь добавить кнопку вместо стандартной enter нажатия клавиши.

Заранее спасибо ... :)

blasteralfred

Ответы [ 4 ]

1 голос
/ 10 апреля 2011

Используйте jQuery's ajax () или post () . Например:

$('#submit').click(function() {
    $.ajax({
      url: myUrl,
      cache: false,
      dataType: "json", 
      data: { 'message' : $('#sendie').val() }, 
      success: function(data){
        //...
      },
      error: function(e, xhr){
        //...
      }
    });
});
0 голосов
/ 14 апреля 2011

Я решил это, удалив chat send из основной группы и включил в trigger click function, как показано ниже;

$('#trigger').click(function() {
    chat.send("testtext", name);
    $(this).val("");
    });

Спасибо @Kon, @Piotr Salaciak и @ Dutchie432 за поддержку ...:)

0 голосов
/ 10 апреля 2011

Просто возьмите код из $('#sendie').keyup(), создайте функцию и вызовите ее из $('#sendie').keyup() и $('#send-message-area').submit()

как-то так

var name = "Guest";
name = name.replace(/(<([^>]+)>)/ig,"");
var chat =  new Chat();
$(function() {
     chat.getState();
     $("#sendie").keydown(function(event) {
         var key = event.which;
         if (key >= 33) {
             var maxLength = $(this).attr("maxlength");
             var length = this.value.length;
             if (length >= maxLength) {
                 event.preventDefault();
             }
          }
          });
     $('#sendie').keyup(function(e) {
          if (e.keyCode == 13) {
             doSend();
             return (false);
          }
     });
     $('#send-message-area').submit(function(e) {
        doSend();
        return (false);
    });
});

function doSend(){
    var text = $('#sendie').val();
    var maxLength = $('#sendie').attr("maxlength");
    var length = text.length;
    if (length <= maxLength + 1) {
        chat.send("testtext", name);
        $('#sendie').val("");
    } else {
        $('#sendie').val(text.substring(0, maxLength));
    }
}
0 голосов
/ 10 апреля 2011

Вы можете попытаться вызвать событие при отправке формы:

$('#sendie').keyup(function(e, extra) {
    if (e.keyCode == 13 || extra.keyCode == 13) {
        var text = $(this).val();
        var maxLength = $(this).attr("maxlength");
        var length = text.length;
        if (length <= maxLength + 1) {
            chat.send("testtext", name);
            $(this).val("");
        } else {
            $(this).val(text.substring(0, maxLength));
        }
    }
 });

...

$("#send-message-area").submit(){
    $('#sendie').trigger('keyup', [{keyCode: 13}]);
    return false;
}

строка return false необходима для предотвращения перезагрузки Вашей страницы.

После обновления Добавлен новый параметр в keyup функцию с именем extra, которая будет хранить код клавиши для события, запущенного «вручную».

...