T
Tyrone Slothrop
I am running a bit of JS to highlight text inputs onFocus in IE. It
seems to be working on all of the forms on the site except one. The
debug code in the script displays the number of input elements in an
alert. On the page where it does not work, the alert is "[object]".
Here is the script:
function initHighlight() {
if (!document.getElementsByTagName){ return; }
var allfields = document.getElementsByTagName("input");
alert (allfields.length); // debug
for (var i=0; i<allfields.length; i++){
var field = allfields;
var attr = field.getAttribute("type");
if (attr == "text" || attr == "password") {
field.onfocus = function () {
this.className = 'highlightActiveField';
}
field.onblur = function () {this.className =
'highlightInactiveField';}
}
}
}
function addLoadEvent(func)
{
var oldonload = window.onload;
if (typeof window.onload != 'function'){ window.onload = func; }
else { window.onload = function() { oldonload(); func(); } }
}
var isIE = navigator.appName.indexOf("Microsoft") != -1;
if (isIE) { addLoadEvent(initHighlight); }
Unfortunately, I cannot reveal the URL of the page (contractural
restrictions).
Under what conditions would IE believe that the length of input fields
is an object, not a number? I have run the page through two
different validators and there are no errors.
TIA!
seems to be working on all of the forms on the site except one. The
debug code in the script displays the number of input elements in an
alert. On the page where it does not work, the alert is "[object]".
Here is the script:
function initHighlight() {
if (!document.getElementsByTagName){ return; }
var allfields = document.getElementsByTagName("input");
alert (allfields.length); // debug
for (var i=0; i<allfields.length; i++){
var field = allfields;
var attr = field.getAttribute("type");
if (attr == "text" || attr == "password") {
field.onfocus = function () {
this.className = 'highlightActiveField';
}
field.onblur = function () {this.className =
'highlightInactiveField';}
}
}
}
function addLoadEvent(func)
{
var oldonload = window.onload;
if (typeof window.onload != 'function'){ window.onload = func; }
else { window.onload = function() { oldonload(); func(); } }
}
var isIE = navigator.appName.indexOf("Microsoft") != -1;
if (isIE) { addLoadEvent(initHighlight); }
Unfortunately, I cannot reveal the URL of the page (contractural
restrictions).
Under what conditions would IE believe that the length of input fields
is an object, not a number? I have run the page through two
different validators and there are no errors.
TIA!