From 08465b4d267f4a7244921b5fccd1244ab4adaa09 Mon Sep 17 00:00:00 2001
From: Baylor Rae ", {
+ "class": "datalist",
+ "id" : $searchInput.attr("list")
+ }).appendTo("body");
+
+ // Remove old datalist
+ $datalist.remove();
+
+ // Update pointer
+ var $datalist = $("#" + $searchInput.attr("list"));
+
+ // Fill new fake datalist
+ datalistItems.each(function() {
+ $("", {
+ "text": $(this).val()
+ }).appendTo($datalist);
+ });
+
+ // Update pointer
+ var datalistItems = $datalist.find("li");
+
+ // Typey type type
+ $searchInput
+ .on("focus", function(){
+ // Reset scroll
+ $datalist.scrollTop(0);
+ scrollValue = 0;
+ })
+ .on("blur", function(){
+ // If this fires immediately, it prevents click-to-select from working
+ setTimeout(function() {
+ $datalist.fadeOut(options.fadeOutSpeed);
+ datalistItems.removeClass("active");
+ }, 500);
+
+ })
+ .on("keyup focus", function(e) {
+ searchPosition = $searchInput.position();
+
+ // Build datalist
+ $datalist
+ .show()
+ .css({
+ top: searchPosition.top + $(this).outerHeight(),
+ left: searchPosition.left,
+ width: $searchInput.outerWidth()
+ });
+
+ datalistItems.hide();
+ $datalist.find("li:RD_contains('" + $searchInput.val() + "')").show();
+ });
+
+ // Don't want to use :hover in CSS so doing this instead
+ datalistItems.on("mouseenter", function() {
+ $(this).addClass("active").siblings().removeClass("active");
+ });
+ datalistItems.on("mouseleave", function() {
+ $(this).removeClass("active");
+ });
+
+ // Window resize
+ $(window).resize(function() {
+ searchPosition = $searchInput.position();
+ $datalist
+ .css({
+ top: searchPosition.top + $(this).outerHeight(),
+ left: searchPosition.left,
+ width: $searchInput.outerWidth()
+ });
+ });
+
+ // Watch arrow keys for up and down
+ $searchInput.on("keydown", function(e) {
+
+ var active = $("li.active");
+ var datalistHeight = $datalist.outerHeight();
+ var datalistItemsHeight = datalistItems.outerHeight();
+
+ // up arrow
+ if ( e.keyCode == 38 ) {
+ if (active.length) {
+ prevAll = active.prevAll("li:visible");
+ if (prevAll.length > 0) {
+ active.removeClass("active");
+ prevAll.eq(0).addClass("active");
+ }
+
+ if ( active.prevAll(":visible").position().top < 0 && scrollValue > 0 ){
+ $datalist.scrollTop(scrollValue-=datalistItemsHeight);
+ }
+ }
+ }
+
+ // down arrow
+ if ( e.keyCode == 40 ) {
+ if (active.length) {
+ var nextAll = active.nextAll("li:visible");
+ if (nextAll.length > 0) {
+ active.removeClass("active");
+ nextAll.eq(0).addClass("active");
+ }
+
+ if ( active.nextAll(":visible").position().top == datalistHeight ){
+ $datalist.scrollTop(scrollValue+=datalistItemsHeight);
+ }
+ } else {
+ datalistItems.removeClass("active");
+ $datalist.find("li:visible:first").addClass("active");
+ }
+ }
+
+ // return or tab key
+ if ( e.keyCode == 13 || e.keyCode == 9 ) {
+ var active = $("li.active");
+ if (active.length) {
+ $searchInput.val(active.text());
+ }
+ $datalist.fadeOut(options.fadeOutSpeed);
+ datalistItems.removeClass("active");
+ }
+
+ // keys
+ if ( e.keyCode != 13 && e.keyCode != 38 && e.keyCode != 40 ){
+ // Reset active class
+ datalistItems.removeClass("active");
+ $datalist.find("li:visible:first").addClass("active");
+
+ // Reset scroll
+ $datalist.scrollTop(0);
+ scrollValue = 0;
+ }
+
+ });
+
+ // When choosing from dropdown
+ datalistItems.on("click", function() {
+ var active = $("li.active");
+ if (active.length) {
+ $searchInput.val($(this).text());
+ }
+ $datalist.fadeOut(options.fadeOutSpeed);
+ datalistItems.removeClass("active");
+ });
+
+ }
+
+ });
+ };
+
+})(jQuery);
\ No newline at end of file
From 1635093bc0bfd694068c3f81c1d1fa4d80abaa42 Mon Sep 17 00:00:00 2001
From: Baylor Rae
", {
"class": "datalist",
- "id" : $searchInput.attr("list")
+ "id" : $input.attr("list")
}).appendTo("body");
// Remove old datalist
$datalist.remove();
// Update pointer
- var $datalist = $("#" + $searchInput.attr("list"));
+ var $datalist = $("#" + $input.attr("list"));
// Fill new fake datalist
datalistItems.each(function() {
@@ -51,7 +51,7 @@
var datalistItems = $datalist.find("li");
// Typey type type
- $searchInput
+ $input
.on("focus", function(){
// Reset scroll
$datalist.scrollTop(0);
@@ -66,7 +66,7 @@
})
.on("keyup focus", function(e) {
- searchPosition = $searchInput.position();
+ searchPosition = $input.position();
// Build datalist
$datalist
@@ -74,11 +74,11 @@
.css({
top: searchPosition.top + $(this).outerHeight(),
left: searchPosition.left,
- width: $searchInput.outerWidth()
+ width: $input.outerWidth()
});
datalistItems.hide();
- $datalist.find("li:RD_contains('" + $searchInput.val() + "')").show();
+ $datalist.find("li:RD_contains('" + $input.val() + "')").show();
});
// Don't want to use :hover in CSS so doing this instead
@@ -91,17 +91,17 @@
// Window resize
$(window).resize(function() {
- searchPosition = $searchInput.position();
+ searchPosition = $input.position();
$datalist
.css({
top: searchPosition.top + $(this).outerHeight(),
left: searchPosition.left,
- width: $searchInput.outerWidth()
+ width: $input.outerWidth()
});
});
// Watch arrow keys for up and down
- $searchInput.on("keydown", function(e) {
+ $input.on("keydown", function(e) {
var active = $("li.active");
var datalistHeight = $datalist.outerHeight();
@@ -144,7 +144,7 @@
if ( e.keyCode == 13 || e.keyCode == 9 ) {
var active = $("li.active");
if (active.length) {
- $searchInput.val(active.text());
+ $input.val(active.text());
}
$datalist.fadeOut(options.fadeOutSpeed);
datalistItems.removeClass("active");
@@ -167,7 +167,7 @@
datalistItems.on("click", function() {
var active = $("li.active");
if (active.length) {
- $searchInput.val($(this).text());
+ $input.val($(this).text());
}
$datalist.fadeOut(options.fadeOutSpeed);
datalistItems.removeClass("active");
From e3346a375a639295a9058bc97418f7466cf20485 Mon Sep 17 00:00:00 2001
From: Baylor Rae
", {
"class": "datalist",
- "id" : $input.attr("list")
+ "id" : list_id
}).appendTo("body");
// Remove old datalist
$datalist.remove();
// Update pointer
- var $datalist = $("#" + $input.attr("list"));
+ var $datalist = $("#" + list_id);
// Fill new fake datalist
datalistItems.each(function() {
From 9556c3f760973fcd925ef0f6ab6e3fdb656a7dab Mon Sep 17 00:00:00 2001
From: Baylor Rae
", {
- "class": "datalist",
- "id" : list_id
- }).appendTo("body");
-
- // Remove old datalist
- $datalist.remove();
-
- // Update pointer
- var $datalist = $("#" + list_id);
-
- // Fill new fake datalist
- datalistItems.each(function() {
- $("", {
- "text": $(this).val()
- }).appendTo($datalist);
- });
-
- // Update pointer
- var datalistItems = $datalist.find("li");
-
- // Typey type type
- $input
- .on("focus", function(){
- // Reset scroll
- $datalist.scrollTop(0);
- scrollValue = 0;
- })
- .on("blur", function(){
-
- // If this fires immediately, it prevents click-to-select from working
- setTimeout(function() {
- $datalist.fadeOut(options.fadeOutSpeed);
- datalistItems.removeClass("active");
- }, 500);
- })
- .on("keyup focus", function(e) {
- searchPosition = $input.position();
-
- // Build datalist
- $datalist
- .show()
- .css({
- top: searchPosition.top + $(this).outerHeight(),
- left: searchPosition.left,
- width: $input.outerWidth()
- });
-
- datalistItems.hide();
- $datalist.find("li:RD_contains('" + $input.val() + "')").show();
- });
-
- // Don't want to use :hover in CSS so doing this instead
- datalistItems
- .on("mouseenter", function() {
- $(this).addClass("active").siblings().removeClass("active");
- })
- .on("mouseleave", function() {
- $(this).removeClass("active");
- });
-
- // Window resize
- $(window).resize(function() {
- searchPosition = $input.position();
- $datalist
- .css({
- top: searchPosition.top + $(this).outerHeight(),
- left: searchPosition.left,
- width: $input.outerWidth()
- });
- });
-
- // Watch arrow keys for up and down
- $input.on("keydown", function(e) {
-
- var active = $("li.active"),
- datalistHeight = $datalist.outerHeight(),
- datalistItemsHeight = datalistItems.outerHeight();
-
- // up arrow
- if ( e.keyCode == 38 ) {
- if (active.length) {
- prevAll = active.prevAll("li:visible");
- if (prevAll.length > 0) {
- active.removeClass("active");
- prevAll.eq(0).addClass("active");
- }
-
- if ( active.prevAll(":visible").position().top < 0 && scrollValue > 0 ){
- $datalist.scrollTop(scrollValue-=datalistItemsHeight);
- }
- }
- }
-
- // down arrow
- if ( e.keyCode == 40 ) {
- if (active.length) {
- var nextAll = active.nextAll("li:visible");
- if (nextAll.length > 0) {
- active.removeClass("active");
- nextAll.eq(0).addClass("active");
- }
-
- if ( active.nextAll(":visible").position().top == datalistHeight ){
- $datalist.scrollTop(scrollValue+=datalistItemsHeight);
- }
- } else {
- datalistItems.removeClass("active");
- $datalist.find("li:visible:first").addClass("active");
- }
- }
-
- // return or tab key
- if ( e.keyCode == 13 || e.keyCode == 9 ) {
- var active = $("li.active");
- if (active.length) {
- $input.val(active.text());
- }
+
+ // Insert home for new fake datalist
+ $("
", {
+ "class": "datalist",
+ "id" : list_id
+ }).appendTo("body");
+
+ // Remove old datalist
+ $datalist.remove();
+
+ // Update pointer
+ var $datalist = $("#" + list_id);
+
+ // Fill new fake datalist
+ datalistItems.each(function() {
+ $("", {
+ "text": $(this).val()
+ }).appendTo($datalist);
+ });
+
+ // Update pointer
+ var datalistItems = $datalist.find("li");
+
+ // Typey type type
+ $input
+ .on("focus", function() {
+ // Reset scroll
+ $datalist.scrollTop(0);
+ scrollValue = 0;
+ })
+ .on("blur", function() {
+
+ // If this fires immediately, it prevents click-to-select from working
+ setTimeout(function() {
$datalist.fadeOut(options.fadeOutSpeed);
- datalistItems.removeClass("active");
- }
-
- // keys
- if ( e.keyCode != 13 && e.keyCode != 38 && e.keyCode != 40 ){
- // Reset active class
- datalistItems.removeClass("active");
- $datalist.find("li:visible:first").addClass("active");
-
- // Reset scroll
- $datalist.scrollTop(0);
- scrollValue = 0;
- }
-
- });
-
- // When choosing from dropdown
- datalistItems.on("click", function() {
- var active = $("li.active");
- if (active.length) {
- $input.val($(this).text());
- }
- $datalist.fadeOut(options.fadeOutSpeed);
- datalistItems.removeClass("active");
- });
-
- } // end if
+ datalistItems.removeClass("active");
+ }, 500);
+ })
+ .on("keyup focus", function(e) {
+ searchPosition = $input.position();
+
+ // Build datalist
+ $datalist
+ .show()
+ .css({
+ top: searchPosition.top + $(this).outerHeight(),
+ left: searchPosition.left,
+ width: $input.outerWidth()
+ });
+
+ datalistItems.hide();
+ $datalist.find("li:RD_contains('" + $input.val() + "')").show();
+ });
+
+ // Don't want to use :hover in CSS so doing this instead
+ datalistItems
+ .on("mouseenter", function() {
+ $(this).addClass("active").siblings().removeClass("active");
+ })
+ .on("mouseleave", function() {
+ $(this).removeClass("active");
+ });
+
+ // Window resize
+ $(window).resize(function() {
+ searchPosition = $input.position();
+ $datalist
+ .css({
+ top: searchPosition.top + $(this).outerHeight(),
+ left: searchPosition.left,
+ width: $input.outerWidth()
+ });
+ });
+
+ // Watch arrow keys for up and down
+ $input.on("keydown", function(e) {
+
+ var active = $("li.active"),
+ datalistHeight = $datalist.outerHeight(),
+ datalistItemsHeight = datalistItems.outerHeight();
+
+ // up arrow
+ if ( e.keyCode == 38 ) {
+ if (active.length) {
+ prevAll = active.prevAll("li:visible");
+ if (prevAll.length > 0) {
+ active.removeClass("active");
+ prevAll.eq(0).addClass("active");
+ }
+
+ if ( active.prevAll(":visible").position().top < 0 && scrollValue > 0 ){
+ $datalist.scrollTop(scrollValue-=datalistItemsHeight);
+ }
+ }
+ }
+
+ // down arrow
+ if ( e.keyCode == 40 ) {
+ if (active.length) {
+ var nextAll = active.nextAll("li:visible");
+ if (nextAll.length > 0) {
+ active.removeClass("active");
+ nextAll.eq(0).addClass("active");
+ }
+
+ if ( active.nextAll(":visible").position().top == datalistHeight ){
+ $datalist.scrollTop(scrollValue+=datalistItemsHeight);
+ }
+ } else {
+ datalistItems.removeClass("active");
+ $datalist.find("li:visible:first").addClass("active");
+ }
+ }
+
+ // return or tab key
+ if ( e.keyCode == 13 || e.keyCode == 9 ) {
+ var active = $("li.active");
+ if (active.length) {
+ $input.val(active.text());
+ }
+ $datalist.fadeOut(options.fadeOutSpeed);
+ datalistItems.removeClass("active");
+ }
+
+ // keys
+ if ( e.keyCode != 13 && e.keyCode != 38 && e.keyCode != 40 ){
+ // Reset active class
+ datalistItems.removeClass("active");
+ $datalist.find("li:visible:first").addClass("active");
+
+ // Reset scroll
+ $datalist.scrollTop(0);
+ scrollValue = 0;
+ }
+
+ });
+
+ // When choosing from dropdown
+ datalistItems.on("click", function() {
+ var active = $("li.active");
+ if (active.length) {
+ $input.val($(this).text());
+ }
+ $datalist.fadeOut(options.fadeOutSpeed);
+ datalistItems.removeClass("active");
+ });
+
+ } // end if
});
};
-
})(jQuery);
\ No newline at end of file
From 85eda228484e53e8a9f117043a81311fd4c31e79 Mon Sep 17 00:00:00 2001
From: Baylor Rae
A HTML5 datalist polyfill that depends on jQuery and Modernizr.
+
+
+
+
+
+
+
+
-