JC asks:
Have you had any success placing focus on a text field inside a cflayoutarea? Is this possible or am I chasing a red herring?
I had not tried this before, but it wasn't too hard. First consider a simple CFLAYOUT page:
<cflayout type="border">
<cflayoutarea position="left" align="center"
size="400" collapsible="true" title="Menu">
<p>
Menu 1
</p>
<p>
Menu 2
</p>
<p>
Menu 3
</p>
</cflayoutarea>
<cflayoutarea position="center">
<p>
<form id="someform">
<input type="text" name="username" id="username">
</form>
</p>
</cflayoutarea>
</cflayout>
Notice I've placed a form inside the main layout box. I want to run code to set focus when the page loads, and ColdFusion provides a function for this - ajaxOnLoad():
<cfset ajaxOnLoad("setfocus")>
The code for setfocus is no different than any other JavaScript code to set focus:
<script>
function setfocus() {
var myfield = document.getElementById("username");
myfield.focus();
}
</script>
The only thing to watch out for is that ajaxOnLoad is a bit picky. It requires your JS function to be inside <HEAD> tags. So a complete example would be:
<html>
<head>
<script>
function setfocus() {
var myfield = document.getElementById("username");
myfield.focus();
}
</script>
</head>
<body>
<cflayout type="border">
<cflayoutarea position="left" align="center"
size="400" collapsible="true" title="Menu">
<p>
Menu 1
</p>
<p>
Menu 2
</p>
<p>
Menu 3
</p>
</cflayoutarea>
<cflayoutarea position="center">
<p>
<form id="someform">
<input type="text" name="username" id="username">
</form>
</p>
</cflayoutarea>
</cflayout>
<cfset ajaxOnLoad("setfocus")>
</body>
</html>