Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Cannot move focus to a control

Status
Not open for further replies.

emozley

Technical User
Joined
Jan 14, 2003
Messages
769
Location
GB
Hi,

I have got a script that makes a <div> elemenet hover on the left hand side of the page when you scroll up and down. The only problem is that when I try to execut the following

<body OnLoad="document.form.search.focus();">

I get an error:

"Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus."

I have tried changing the name of the form and of the text box but no luck so far. Is there anything else I can try? Here is the hover script:

<style type="text/css">

#topbar{
position:absolute;
border: 0px solid black;
padding: 2px;
background-color: white;
width: 140px;
height: 150px;
visibility: hidden;
z-index: 100;
}

</style>

<script type="text/javascript">

/***********************************************
* Floating Top Bar script- © Dynamic Drive (* Sliding routine by Roy Whittle (* This notice must stay intact for legal use.
* Visit for full source code
***********************************************/

var persistclose=0 //set to 0 or 1. 1 means once the bar is manually closed, it will remain closed for browser session
var startX = 15 //set x offset of bar in pixels
var startY = 130 //set y offset of bar in pixels
var verticalpos="fromtop" //enter "fromtop" or "frombottom"

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function closebar(){
if (persistclose)
document.cookie="remainclosed=1"
document.getElementById("topbar").style.visibility="hidden"
}

function staticbar(){
barheight=document.getElementById("topbar").offsetHeight
var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
var d = document;
function ml(id){
var el=d.getElementById(id);
if (!persistclose || persistclose && get_cookie("remainclosed")=="")
el.style.visibility="visible"
if(d.layers)el.style=el;
el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
el.x = startX;
if (verticalpos=="fromtop")
el.y = startY;
else{
el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
el.y -= startY;
}
return el;
}
window.stayTopLeft=function(){
if (verticalpos=="fromtop"){
var pY = ns ? pageYOffset : iecompattest().scrollTop;
ftlObj.y += (pY + startY - ftlObj.y)/8;
}
else{
var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
ftlObj.y += (pY - startY - ftlObj.y)/8;
}
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("stayTopLeft()", 10);
}
ftlObj = ml("topbar");
stayTopLeft();
}

if (window.addEventListener)
window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
window.attachEvent("onload", staticbar)
else if (document.getElementById)
window.onload=staticbar
</script>

And the form is here:

<div id="topbar">
<p class="style15"><span class="text2Col"><strong>BWB DIRECTORY</strong></span><span class="style14"></span></p>

<form name="form" method="POST" action="validate.asp">
<span class="text2"><strong>search</strong></span><br>
<font face="Verdana">
<input type="text" name="search" style="font-family: Verdana" size=8 onClick="this.value=''"><font size="1">
</font>
<input type="submit" value="Go" style="font-family: Verdana"><font size="1">
</font></font>
</form>

</div>

Thanks very much

Ed
 
Do this just to make it easy.
Code:
<input type="text" [!]id="searchId"[/!] style="font-family: Verdana" size=8 onClick="this.value=''"><

And in your body tag
Code:
<body onload="document.getElementById('searchId').focus()">


<.

 
Hmmm...same problem!
 
Hmmmmm...Oh duh. It's because you have

Code:
visibility:invisible;
up in your CSS.


<.

 
You can't put focus on something that you can't see.


Code:
visibility:hidden

Damn man, it's Monday and I'm out of it.


<.

 
That was it! I've now removed that line and the page works. It actually looks the same so I don't know why it was there in the first place.

Thanks very much
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top