Initial commit
This commit is contained in:
93
Scripts/WebForms/Focus.js
Normal file
93
Scripts/WebForms/Focus.js
Normal file
@@ -0,0 +1,93 @@
|
||||
//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user