一、C#代码调用
ScriptManager.RegisterStartupScript(this, this.GetType(), "focusSearchActiveObject", "focusSearchActiveObject('" + searchFieldId + "');", true);
二、javascript代码
function focusSearchActiveObject(searchID) {
var searchContainer = document.getElementById(searchID);
var targetSubControl = findSubControlByName(searchContainer, getActiveNameFromCookie());
if (targetSubControl != null) {
targetSubControl.focus();
if (targetSubControl.tagName.toLowerCase() == "input") {
var rtextRange = targetSubControl.createTextRange();
rtextRange.moveStart("character", targetSubControl.value.length);
rtextRange.collapse(true);
rtextRange.select();
}
}
clearActiveNameOnCookie();
}
function findSubControlByName(containerObject, subControlName) {
var targetSubControl = null;
for (var i = 0; i < containerObject.childNodes.length; i++) {
if (isFormControl(containerObject.childNodes[i])) {
if (containerObject.childNodes[i].getAttribute("name") == subControlName) {
targetSubControl = containerObject.childNodes[i];
break;
}
}
else {
if (containerObject.childNodes[i].childNodes.length > 0) {
targetSubControl = findSubControlByName(containerObject.childNodes[i], subControlName);
if (targetSubControl != null) {
break;
}
}
}
}
return targetSubControl;
}
function isFormControl(control) {
if (control.tagName == undefined) {
return false;
}
if (control.tagName.toLowerCase() == "input") {
return true;
}
else if (control.tagName.toLowerCase() == "select") {
return true;
}
else if (control.tagName.toLowerCase() == "textarea") {
return true;
}
else {
return false;
}
}
function setActiveNameToCookie(objName) {
var str = "input_currentActive=" + objName;
document.cookie = str;
}
function getActiveNameFromCookie() {
var arrStr = document.cookie.split("; ");
for (var i = 0; i < arrStr.length; i++) {
var temp = arrStr[i].split("=");
if (temp[0] == "input_currentActive")
return unescape(temp[1]);
}
}
function clearActiveNameOnCookie() {
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = "input_currentActive=''; expires=" + date.toGMTString();
}
参考: