add extension for typing delay
This commit is contained in:
parent
a1e97d6063
commit
92559fd7df
@ -16,8 +16,8 @@
|
||||
<nav class="navbar navbar-expand navbar-light justify-content-between">
|
||||
<a class="navbar-brand" href="#">HTML 101</a>
|
||||
<form class="form-inline" action="">
|
||||
<input type="text" class="form-control mr-sm-2" id="your-name-text" placeholder="Enter your name" />
|
||||
<input type="text" class="form-control" maxlength="6" id="your-color-text" placeholder="Color" />
|
||||
<input type="text" class="form-control mr-sm-2" id="your-name-text" placeholder="Enter your name!" />
|
||||
<input type="text" class="form-control" id="your-color-text" placeholder="Color?" />
|
||||
</form>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="navbar-nav ml-auto">
|
||||
@ -42,6 +42,7 @@
|
||||
</div>
|
||||
|
||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
||||
<script src="~/js/extensions.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
|
||||
|
@ -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;
|
||||
|
36
BinaryDad.Coding/wwwroot/js/extensions.js
Normal file
36
BinaryDad.Coding/wwwroot/js/extensions.js
Normal 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);
|
@ -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';
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user