add extension for typing delay

This commit is contained in:
2021-07-21 11:00:05 -04:00
parent a1e97d6063
commit 92559fd7df
4 changed files with 44 additions and 3 deletions

View File

@ -22,6 +22,10 @@ textarea, .navbar-brand {
line-height: 18px;
}
#your-name-text, #your-color-text {
font-weight: bold;
}
#your-color-text {
width: 90px;
text-align: center;

View File

@ -0,0 +1,36 @@
; (function ($) {
$.fn.extend({
doneTyping: function (callback, timeout) {
timeout = timeout || 500; // 500 ms 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.on('keyup keypress paste', function (e) {
// This catches the backspace button in chrome, but also prevents
// the event from triggering too preemptively. Without this line,
// using tab/shift+tab will make the focused element fire the callback.
if (e.type == 'keyup' && 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);

View File

@ -34,7 +34,7 @@
// events
$(window).on('hashchange', isLiveMode);
$('#your-name-text, #your-color-text').on('blur', sendName);
$('#your-name-text, #your-color-text').doneTyping(sendName);
let isTeacher = window.location.hash === '#4ELQcUq7UnFGghAZCVr4Chr9JmtncigfkGu5WSf9';