menu.widget().hide();
break;
default:
- clearTimeout(menu.filterTimer);
- var prev = menu.previousFilter || "";
- var character = String.fromCharCode(event.keyCode);
- var skip = false;
- if (character == prev) {
- skip = true;
- } else {
- character = prev + character;
- }
- var match = menu.widget().children("li").filter(function() {
- return new RegExp("^" + character, "i").test($(this).text());
- });
- var match = skip && match.index(menu.active.next()) != -1 ? match.next() : match;
- if (!match.length) {
- character = String.fromCharCode(event.keyCode);
- match = menu.widget().children("li").filter(function() {
- return new RegExp("^" + character, "i").test($(this).text());
- });
- }
- if (match.length) {
- menu.focus(event, match);
- if (match.length > 1) {
- menu.previousFilter = character;
- menu.filterTimer = setTimeout(function() {
- delete menu.previousFilter;
- }, 1000);
- } else {
- delete menu.previousFilter;
- }
- } else {
- delete menu.previousFilter;
- }
}
});
});
<li><a href="#">Ada</a></li>
<li><a href="#">Adamsville</a></li>
<li><a href="#">Addyston</a></li>
- <li><a href="#">Adelphi</a></li>
+ <li><a href="#">Delphi</a></li>
+ <li><a href="#">Saarland</a></li>
+ <li><a href="#">Salzburg</a></li>
</ul>
<ul id="menu2">
event.preventDefault();
event.stopImmediatePropagation();
break;
+ default:
+ clearTimeout(self.filterTimer);
+ var prev = self.previousFilter || "";
+ var character = String.fromCharCode(event.keyCode);
+ var skip = false;
+ if (character == prev) {
+ skip = true;
+ } else {
+ character = prev + character;
+ }
+ function escape(value) {
+ return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ }
+ var match = self.widget().children(".ui-menu-item").filter(function() {
+ return new RegExp("^" + escape(character), "i").test($(this).text());
+ });
+ var match = skip && match.index(self.active.next()) != -1 ? self.active.nextAll(".ui-menu-item") : match;
+ if (!match.length) {
+ character = String.fromCharCode(event.keyCode);
+ match = self.widget().children(".ui-menu-item").filter(function() {
+ return new RegExp("^" + escape(character), "i").test($(this).text());
+ });
+ }
+ if (match.length) {
+ self.focus(event, match);
+ if (match.length > 1) {
+ self.previousFilter = character;
+ self.filterTimer = setTimeout(function() {
+ delete self.previousFilter;
+ }, 1000);
+ } else {
+ delete self.previousFilter;
+ }
+ } else {
+ delete self.previousFilter;
+ }
}
});
},