You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.8 KiB
92 lines
2.8 KiB
function WebForm_FindFirstFocusableChild(control) {
|
|
if (!control || !(control.tagName)) {
|
|
return null;
|
|
}
|
|
var tagName = control.tagName.toLowerCase();
|
|
if (tagName == "undefined") {
|
|
return null;
|
|
}
|
|
var children = control.childNodes;
|
|
if (children) {
|
|
for (var i = 0; i < children.length; i++) {
|
|
try {
|
|
if (WebForm_CanFocus(children[i])) {
|
|
return children[i];
|
|
}
|
|
else {
|
|
var focused = WebForm_FindFirstFocusableChild(children[i]);
|
|
if (WebForm_CanFocus(focused)) {
|
|
return focused;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
function WebForm_AutoFocus(focusId) {
|
|
var targetControl;
|
|
if (__nonMSDOMBrowser) {
|
|
targetControl = document.getElementById(focusId);
|
|
}
|
|
else {
|
|
targetControl = document.all[focusId];
|
|
}
|
|
var focused = targetControl;
|
|
if (targetControl && (!WebForm_CanFocus(targetControl)) ) {
|
|
focused = WebForm_FindFirstFocusableChild(targetControl);
|
|
}
|
|
if (focused) {
|
|
try {
|
|
focused.focus();
|
|
if (__nonMSDOMBrowser) {
|
|
focused.scrollIntoView(false);
|
|
}
|
|
if (window.__smartNav) {
|
|
window.__smartNav.ae = focused.id;
|
|
}
|
|
}
|
|
catch (e) {
|
|
}
|
|
}
|
|
}
|
|
function WebForm_CanFocus(element) {
|
|
if (!element || !(element.tagName)) return false;
|
|
var tagName = element.tagName.toLowerCase();
|
|
return (!(element.disabled) &&
|
|
(!(element.type) || element.type.toLowerCase() != "hidden") &&
|
|
WebForm_IsFocusableTag(tagName) &&
|
|
WebForm_IsInVisibleContainer(element)
|
|
);
|
|
}
|
|
function WebForm_IsFocusableTag(tagName) {
|
|
return (tagName == "input" ||
|
|
tagName == "textarea" ||
|
|
tagName == "select" ||
|
|
tagName == "button" ||
|
|
tagName == "a");
|
|
}
|
|
function WebForm_IsInVisibleContainer(ctrl) {
|
|
var current = ctrl;
|
|
while((typeof(current) != "undefined") && (current != null)) {
|
|
if (current.disabled ||
|
|
( typeof(current.style) != "undefined" &&
|
|
( ( typeof(current.style.display) != "undefined" &&
|
|
current.style.display == "none") ||
|
|
( typeof(current.style.visibility) != "undefined" &&
|
|
current.style.visibility == "hidden") ) ) ) {
|
|
return false;
|
|
}
|
|
if (typeof(current.parentNode) != "undefined" &&
|
|
current.parentNode != null &&
|
|
current.parentNode != current &&
|
|
current.parentNode.tagName.toLowerCase() != "body") {
|
|
current = current.parentNode;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|