Я пытаюсь создать систему ввода текста в стиле facebook. Но у меня есть один вопрос о keypress.
Итак, мой код работает нормально, но я хочу изменить что-то еще, например keypress, keyup, paste ect.
Я использую следующие коды javascript и ajax. В следующем моем коде ajax работает как if ($.trim(updateval).length == 0) { send width notyping.php
notyping.php posting 0, а 0 не отображает вводное сообщение.
Если if ($.trim(updateval).length > 13) { send with usertyping.php
usertyping.php posting 1 и 1 отображается сообщение для ввода текста.
Проблема здесь, если пользователь остановлен, чтобы набрать какое-то сообщение, а затем каждый раз говорит о наборе текста. Что мне делать, чтобы исправить это, кто-нибудь может мне помочь в этом отношении?
Все коды ajax и javascript находятся здесь:
;
(function($) {
$.fn.extend({
donetyping: function(callback, timeout) {
timeout = timeout || 1000; // 1 second default timeout
var timeoutReference,
doneTyping = function(el) {
if (!timeoutReference) return;
timeoutReference = null;
callback.call(el);
};
return this.each(function(i, el) {
var $el = $(el);
// Chrome Fix (Use keyup over keypress to detect backspace)
// thank you @palerdot
$el.is(':input') && $el.is(':input') && $el.on('keyup keypress paste', function(e) {
// This catches the backspace button in chrome, but also prevents
// the event from triggering too premptively. Without this line,
// using tab/shift+tab will make the focused element fire the callback.
if (e.type == 'keypress' && e.keyCode != 8) return;
// Check if timeout has been set. If it has, "reset" the clock and
// start over again.
if (timeoutReference) clearTimeout(timeoutReference);
timeoutReference = setTimeout(function() {
// if we made it here, our timeout has elapsed. Fire the
// callback
doneTyping(el);
}, timeout);
}).on('blur', function() {
// If we can, fire the event since we're leaving the field
doneTyping(el);
});
});
}
});
})(jQuery);
Проверка текстового значения, если оно равно 0, тогда отправить данные 0 для пользователя без ввода
$('#chattextarea').donetyping(function() {
var typingval = $("#chattextarea").val();
var tpy = $('#tpy').val();
if ($.trim(typingval).length == 0) {
$.ajax({
type: "POST",
url: "/notyping.php",
data: {
tpy: tpy
},
success: function(data) {
}
});
}
Проверка текстового значения > 13, а затем передача данных - 1 для ввода пользователем. (Возможно, нужно изменить этот оператор if)
if ($.trim(typingval).length > 13) {
$.ajax({
type: "POST",
url: "/usertyping.php",
data: {
tpy: tpy
},
success: function(data) {
}
});
}
});
Проверить и отобразить ввод пользователя:
function getTyping(){
setInterval(function(){
var tpy = $('#tpy').val();
$.ajax({
type: "POST",
url: "/getTyping.php",
data: { tpy: tpy },
success: function(data) {
$('#s').html(data);
}
});
},1000);
}
getTyping();
HTML
<textarea id="chattextarea"></textarea>
<div id="s"></div>