diff options
author | jzaefferer <joern.zaefferer@gmail.com> | 2011-02-22 12:09:03 +0100 |
---|---|---|
committer | jzaefferer <joern.zaefferer@gmail.com> | 2011-02-22 12:09:03 +0100 |
commit | 68c13cd6a624b145ccf9a585baaea0aa36eff60c (patch) | |
tree | 9d63648818bd5f9549bc4d50034a2bdfa26a4534 /tests/visual | |
parent | 355705878a22c6d00f242f0d8d93d03a097935e1 (diff) | |
download | jquery-ui-68c13cd6a624b145ccf9a585baaea0aa36eff60c.tar.gz jquery-ui-68c13cd6a624b145ccf9a585baaea0aa36eff60c.zip |
Menu: Escape characters for RegExp matching for keyboard item matching.
Diffstat (limited to 'tests/visual')
-rw-r--r-- | tests/visual/menu/flyoutmenu.js | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tests/visual/menu/flyoutmenu.js b/tests/visual/menu/flyoutmenu.js index 0485440a5..8534c9462 100644 --- a/tests/visual/menu/flyoutmenu.js +++ b/tests/visual/menu/flyoutmenu.js @@ -57,15 +57,17 @@ $.widget("ui.flyoutmenu", { } else { character = prev + character; } - + function escape(value) { + return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } var match = self.activeItem.parent("ul").children("li").filter(function() { - return new RegExp("^" + character, "i").test($("a", this).text()); + return new RegExp("^" + escape(character), "i").test($("a", this).text()); }); var match = skip && match.index(self.active.next()) != -1 ? match.next() : match; if (!match.length) { character = String.fromCharCode(event.keyCode); match = self.widget().children("li").filter(function() { - return new RegExp("^" + character, "i").test($(this).text()); + return new RegExp("^" + escape(character), "i").test($(this).text()); }); } if (match.length) { |