From 54eccb6b04303cfaa27fbe3a3ddd1147e5220359 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 5 Sep 2008 03:48:47 +0000 Subject: [PATCH] Core: Added :tabbable selector to find elements that participate in the tabbing order. --- ui/ui.core.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/ui/ui.core.js b/ui/ui.core.js index 7165ff91a..f4ffb74cb 100644 --- a/ui/ui.core.js +++ b/ui/ui.core.js @@ -17,10 +17,29 @@ $.fn.remove = function() { return _remove.apply(this, arguments ); }; -// This adds a selector to check if data exists. -$.expr[':'].data = function(a, i, m) { - return $.data(a, m[3]); -}; +$.extend($.expr[':'], { + data: function(a, i, m) { + return $.data(a, m[3]); + }, + + // TODO: add support for object, area + tabbable: function(a, i, m) { + var nodeName = a.nodeName.toLowerCase(); + + return ( + // in tab order + a.tabIndex != -1 && + + ( // node type participates in tab order + // anchor tag + ('a' == nodeName) || + + // enabled form element + (/input|select|textarea|button/.test(nodeName) && !a.disabled) + ) + ); + } +}); $.keyCode = { BACKSPACE: 8, -- 2.39.5