When the autocomplete textbox is expanded, and the user scrolls the browser page, the box stays in the same position and does not disappear. I'm ok with it being open if it stays in the same position, but I don't understand why it's staying in the same spot on scroll.
function ($) {
$.widget("ui.combobox", {
_create: function () {
var self = this,
select = this.element.hide(),
selected = select.children(":selected"),
value = selected.val() ? selected.text() : "";
var input = this.input = $("<input id='innertextbox'>")
.insertAfter(select)
.autocomplete({
delay: 0,
minLength: 0,
source: function (request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response(select.children("option").map(function () {
var text = $(this).text();
if (this.value && (!request.term || matcher.test(text)))
return {
label: text.replace(
new RegExp(
"(?![^&;]+;)(?!<[^<>]*)(" +
$.ui.autocomplete.escapeRegex(request.term) +
")(?![^<>]*>)(?![^&;]+;)", "gi"
), "<strong>$1</strong>"),
value: text,
option: this
};
}));
},
select: function (event, ui) {
ui.item.option.selected = true;
self._trigger("selected", event, {
item: ui.item.option
});
if (jQuery(ui.item.option).hasClass('_self'))
window.location.href = ui.item.option.value;
else
window.open(ui.item.option.value,'_newtab');
},
change: function (event, ui) {
if (!ui.item) {
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i"),
valid = false;
select.children("option").each(function () {
if ($(this).text().match(matcher)) {
this.selected = valid = true;
return false;
}
}); var innerBoxValue = $("#innertextbox").val();
if (!valid && innerBoxValue != "Daily Needs...") {
// remove invalid value, as it didn't match anything
$(this).val("");
select.val("");
input.data("autocomplete").term = "";
return false;
}
}
}
})
.addClass("ui-widget ui-widget-content");
input.data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
this.button = $("<button type='button' id='dailyNeedsButton'> </button>")
.attr("tabIndex", -1)
.attr("title", "Show All Items")
.insertAfter(input)
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass("ui-corner-all")
.addClass("ui-button-icon")
.click(function () {
jQuery("#innertextbox").val("");
// close if already visible
if (input.autocomplete("widget").is(":visible")) {
input.autocomplete("close");
return;
}
// work around a bug (likely same cause as #5265)
$(this).blur();
// pass empty string as value to search for, displaying all results
input.autocomplete("search", "");
input.focus();
});
},
destroy: function () {
this.input.remove();
this.button.remove();
this.element.show();
$.Widget.prototype.destroy.call(this);
}
});
})(jQuery);
jQuery(document).ready(function () {
jQuery("#dailyNeedsSelect").combobox();
jQuery("#innertextbox").blur(function () {
jQuery("#innertextbox").val("Daily Needs...");
});
jQuery("#innertextbox").val("Daily Needs...");
jQuery(".ui-autocomplete").position({ my: "right top", at: "right bottom", of: jQuery("#innertextbox"), collision: "flip flip" });
jQuery("#dailyNeedsButton").blur(function () { jQuery("#innertextbox").val("Daily Needs..."); });
jQuery("#innertextbox").focus(function () { if (jQuery("#innertextbox").val() == "Daily Needs...") jQuery("#innertextbox").val(""); });
jQuery("#innertextbox").bind("click", function () {
jQuery("#innertextbox").val("");
});
});
To help select from the list of available options, jQuery UI provides an autocomplete An autocomplete widget is a control that basically filters the options to display only those matching with what the user is typing in control. The autocomplete () method is used to create a list of suggestions and can be used in two forms.
jquery.ui.autocomplete.scroll.js is a jQuery extension for the jQuery UI autocomplete widget that makes the suggestion list scrollable and allows to specify the maximum number of entries to show. Suitable for long autocomplete list. 1. Include the necessary jQuery library and jQuery UI framework on the web page.
The autocomplete () method can be used in two forms − The autocomplete (options) method declares that an HTML <input> element must be managed as an input field that will be displayed above a list of suggestions. The options parameter is an object that specifies the behavior of the list of suggestions when the user is typing in the input field.
The jQuery UI Autocomplete position option is used to add the position of suggested menu in relation to the associated input element. $ ( ".selector" ).autocomplete ( { position: { my : "right top", at: "right bottom" } });
This has been fixed with the addition of the appendTo option for the autocomplete method:
http://docs.jquery.com/UI/Autocomplete#option-appendTo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With