Ich verwende ein PHP-Chat-Plugin. Das Problem mit diesem Chat-Plugin ist, dass es gut funktioniert, wenn die Nachricht durch Drücken der Taste gesendet wird, aber wenn es auf Eingabe gesetzt ist, ruft es zu viele Ajax-Aufrufe auf. Manchmal sendet es eine einzelne Nachricht und manchmal werden 4 5 Nachrichten gesendet. Ich habe alle Lösungen versucht, wie eine Variable definieren, auf sie einen Scheck haben, aber ich bin nicht sicher, was ich hier fehlt die Snippet-Funktion zum Senden NachrichtVerhindern mehrere AJAX-Anrufe bei Eingabe drücken
$("#text-messages-request").on("focus", "textarea.type-a-message-box", function() {
var ID = $(this).attr("id");
var URL = $.base_url + 'ajax/add_chat_ajax.php';
$('div.message-btn-target').html('<a href="#" id="' + ID + '" class="btn btn-default btn-sm send-message"><i class="glyphicon glyphicon-send"></i> ' + $.sendButton + '</a>');
//$('#type-a-message').remove();
user_is_typing(this, ID);
$(this).on('blur', function() {
stop_type_status();
});
// Input Handler
if ($.enterIsSend == true) {
var running = false;
$(document).bind("keypress", function(e) {
if (e.which == 13) {
if (running === false) {
running = true;
send_message(ID, URL);
}
return false;
}
});
$("a.send-message").on("click", function() {
if (running === false) {
running = true;
send_message(ID, URL);
$(".type-a-message-box").focus();
}
});
} else {
$("a.send-message").on("click", function() {
send_message(ID, URL);
$(".type-a-message-box").focus();
});
}
return false;
});
Bitte helfen ich auf diesem bin stecken verwendet wird, ist für Tage . Es ist diese Echtzeit-Chat-Funktion initiiert, die, wenn beide Benutzer online sind und es hält sich ruft nach jeweils 7 Sekunden
setInterval("realtime_chat()", 7000);
function realtime_chat()
{
last_msg_id = $(".msg-div").last().attr("id");
var ID = $("#text-messages").attr("rel");
var R_URL = $.base_url + 'ajax/refresh_unreadMessages_ajax.php';
var URL = $.base_url + 'ajax/chat_realtime_ajax.php';
var I_URL = $.base_url + 'ajax/chat_last_id.php';
var dataString = 'id='+encodeURIComponent(ID);
$.post(URL, dataString, function(html) {
var html_response = $(html);
var new_msg_id = html_response.attr("id");
if(new_msg_id !== last_msg_id)
{
$("#text-messages").append(html);
}
})
// deal with update counter and typing status
$('ul#messages-stack-list li').each(function() {
cID = $(this).attr('id');
cString = 'id='+cID;
type_status(cID);
update_unMsg_counter(R_URL, cString, cID, 'realtime');
});
title_unread_counter();
return false; }
Es ist nur zu anfügen, was, wenn es eine neue Nachricht in der Datenbank gespeichert ist. und hier meine html der Textbox ist
<div id="type" class="collapse border-top">
<textarea type="text" class="form-control border-none" id="type-a-message- box" placeholder="Write the message"></textarea>
</div>
Funktion TextArea- Inhalt für immer an der Spitze ist und die Funktion Nachrichtens wird wie folgt
function send_message(ID, URL)
{
var textarea = $('textarea.type-a-message-box').val();
if ($.trim(textarea).length == 0)
{
alert($.emptyBox);
} else {
$.ajax({
type: "POST",
url: URL,
data: {id: ID, message: textarea},
cache: false,
beforeSend: function() { $('#loadingDiv').show(); },
error: function() { $('#loadingDiv').hide(); $('#errorDiv').html('<p>'+$.ajaxError+'</p>'); },
success: function(html) {
$('#loadingDiv').hide();
$("p.no-messages").remove();
$("#text-messages-request").html(html);
$("#text-messages").attr("rel", ID);
stop_type_status();
$(".type-a-message-box").focus();
}
});
}
}
Hoffe, dass es bei der Formulierung der Lösung
Ich würde dies auf Formular senden tun. Die Nachricht sendet onSubmit. Wie wir wissen, wird OnSubmit auf Enter zugreifen. – C2486
Problem ist, es ist nur ein Textfeld keine Form – user3149814