Здравстуйте!
Имеется небольшая форма:
<form>
<input type="text" name="name" id="name" value="Ваше имя" size="20" onblur="checkThis(a)" />
<span id="nameError"></span><br />
<input type="text" name="email" id="email" value="Ваш email" size="20" onblur="checkThis(b)" />
<span id="emailError"></span><br />
<textarea name="text" id="text" onblur="checkThis(c)">Текст Вашего сообщения</textarea>
<span id="textError"></span><br />
<input type="submit" value="Оставить сообщение" />
</form>
и вот такой страшный скрипт проверки:
var sizeError = new Array();
var voidError = new Array();
var fieldError = new Array();
var defVal = new Array();
a = document.getElementById('name');
b = document.getElementById('email');
c = document.getElementById('text');
sizeError[a] = "Длина имени должна быть менее 10 символов",
voidError[a] = "Пустое имя недопустимо",
fieldError[a] = "nameError",
defVal[a] = "Ваше имя",
sizeError[b] = "Длина электронного адреса не более 30 символов",
voidError[b] = "Введите Ваш электронный адрес",
fieldError[b] = "emailError",
defVal[b] = "Ваш email",
sizeError[c] = "Сообщение не длиннее 255 символов",
voidError[c] = "Пустое сообщение недопустимо",
fieldError[c] = "textError",
defVal[c] = "Текст Вашего сообщения";
function checkThis(x) {
alert(sizeError[x]+"\n"+voidError[x]+"\n"+fieldError[x]+"\n"+defVal[x]);
if ((x.value.length)>3) {
document.getElementById(fieldError[x]).innerHTML = sizeError[x];
}
if ((x.value) == "") {
document.getElementById(fieldError[x]).innerHTML = voidError[x];
}
if ((x.value) == defVal[x]) {
document.getElementById(fieldError[x]).innerHTML = voidError[x];
}
}
Проблема: onblur на инпуте "name" работает абсолютно также, как на "email".
На "text" при этом работает как надо.