r943 - branches/experimental/tabbable
Author: scott.gonzalez
Date: Sat Nov 15 05:47:32 2008
New Revision: 943
Modified:
branches/experimental/tabbable/ui.core.js
Log:
Tabbable: Applied patch from Colin/Alex.
Modified: branches/experimental/tabbable/ui.core.js
==============================================================================
--- branches/experimental/tabbable/ui.core.js (original)
+++ branches/experimental/tabbable/ui.core.js Sat Nov 15 05:47:32 2008
@@ -1,34 +1,35 @@
(function($) {
-
-function getTabIndex(element) {
- var index = parseInt(element.getAttribute('tabIndex'), 10);
- if (isNaN(index)) {
- index = element.tabIndex;
- }
- return index;
+var normalizedTabindex = ($.browser.msie && parseInt($.browser.version,
10) < 8) ?
+ 'tabIndex' :
+ 'tabindex';
+
+function hasTabindexAttr(element) {
+ var attributeNode = element.getAttributeNode(normalizedTabindex);
+ return attributeNode ? attributeNode.specified : false;
+}
+function getTabIndex(element) {
+ if (!hasTabindexAttr(element)) {
+ return undefined;
+ }
+ var value = parseInt(element.getAttribute(normalizedTabindex), 10);
+ return !isNaN(value) ? value : undefined;
}
$.extend($.expr[':'], {
focusable: function(element) {
var nodeName = element.nodeName.toLowerCase(),
tabIndex = getTabIndex(element);
-
- if ($(element).is(':hidden') || $(element).parents(':hidden').length) {
- return false;
- }
-
- return (/input|select|textarea|button|object|area/.test(nodeName)
- ? !('hidden' == element.type || element.disabled)
- : 'a' == nodeName
+ return (/input|select|textarea|button|object/.test(nodeName)
+ ? !(element.disabled)
+ : 'a' == nodeName || 'area' == nodeName
? element.href || !isNaN(tabIndex)
- : !isNaN(tabIndex));
+ : !isNaN(tabIndex)) &&
(!$(element).parents().andSelf().filter(':hidden').length) ? true : false;
},
tabbable: function(element) {
var tabIndex = getTabIndex(element);
-
- return !isNaN(tabIndex) && tabIndex >= 0 && $(element).is(':focusable');
+ return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
}
});
@@ -36,9 +37,9 @@
var element = this[0];
if (element) {
- if (!isNaN(getTabIndex(element))) {
- $(element).attr('tabIndex', -1);
- }
+ //if (!isNaN(getTabIndex(element))) {
+ $(element).attr('tabIndex', -1);
+ //}
setTimeout(function() {
element.focus();