[thelist] Javascript text field onfocus
jsWalter
jsWalter at torres.ws
Tue Jun 22 18:15:35 CDT 2004
2 things...
1) your method does not take into account multiple FORMs on single page.
Yes, I know, but I've seen to too many times.
2) Determining "state" of an object is not all that straight forward.
"walking" up the DOM tree and looking at the DISPLAY value works
fine,
but *only* if the value was set via HTML inline or JS code.
To see what the CSS characteristics are is a bit hairier.
Below is my rendition of your "requirements" minus the DISPLAY checking.
We'll see if anyone has any good ideas on how to solve that pickle.
Meanwhile I'll see what my little brain can think of.
This is an interesting issue, I'd love to have a solution as well.
Walter
==================================
// WARNING: If you already have an onLoad call, you need to
// incorporate that into this as well.
window.onload = function()
{
// Boolean to check if we found our first TEXT Object
var bolFound = false;
// Build array of all FORMS on this page
var colForms = document.forms;
// There may be more than one (1) Form on a page
// Loop through them all
for (var i = 0; i < colForms.length; i++)
{
// Send current From for further processing
InitForms(colForms[i]);
// If a TEXT Object is already hit
if ( bolFound )
break;
} // for (...)
// Form Processor
function InitForms(objForm)
{
// Create collection of FORM Elements
var arryInput = objForm.getElementsByTagName('input');
// Loop through all the Objects in the given Form
for (var i = 0; i < arryInput.length; i++)
{
// Get the current FORM Element
objElement = arryInput[i];
// Only look at the TEXT Object
if(
objElement.getAttribute("type").toLowerCase() == "text" )
{
// Place focus here
objElement.focus();
// Since we found it
bolFound = true;
// We can leave now
return;
} // if( ... )
} // for (...)
} // function InitForms(objForm)
} // window.onload = function()
==================================
More information about the thelist
mailing list