I'm getting no Javascript errors, but the code does nothing...
function registerValidator(target, validator) {
var element = document.getElementById(target);
if (element) {
var validationID = element.id + "_validationResult";
var validationSpan = document.createElement('span');
validationSpan.id = validationID;
element.parentNode.appendChild(validationSpan);
element.onkeyup = function() {
var result = validator(element);
if (result.ok) {
validationSpan.innerHTML = '<img src="/media/valid.gif" width="12" />';
} else {
validationSpan.innerHTML = '<img src="/media/invalid.gif" width="12" />';
if (result.message) {
validationSpan.innerHTML += '<br />' + result.message;
}
}
};
alert(1);
}
}
window.onload = function() {
registerValidator('username', function(element) {
var result = new Object();
alert('validate');
if (element.value.length >= 4) {
result.ok = true;
}
else {
result.ok = false;
result.message = "Too short";
}
return result;
});
alert(2);
}
The two alerts (1 and 2) are triggered correctly, but the 'validate' alert is never triggered. The function is used for the following element:
<input type="text" name="username" id="username" />
I have tried this in Google Chrome, Firefox 3 and Internet Explorer 8.