Просмотр полной версии : setTimeout срабатывает сразу
Здравствуйте. Помогите разобраться, в моем коде setTimeout запускается сразу же, без задержки.
function CheckLength(id, max)
{
var field = document.getElementById(id).value.length;
var idToDisplay = null;
var idToHide = null;
if(field > max)
{
switch(id)
{
case 'name' : { idToDisplay = 'name_error'; idToHide = 'name_success'; break; }
case 'contacts' : { idToDisplay = 'contacts_error'; idToHide = 'contacts_success'; break; }
}
document.getElementById(idToDisplay).style.display = 'block';
document.getElementById(idToHide).style.display = 'none';
}
else
{
document.getElementById('name_error').style.displa y = 'none';
setTimeout(DisplaySuccess(), 1000);
}
}
function DisplaySuccess()
{
document.getElementById('name_success').style.disp lay = 'block';
}
CheckLength запускается событием onkeyup
setTimeout(DisplaySuccess, 1000);
нужно описывать функцию именно так БЕЗ скобок. В противном случае это будет понято как команда вызова функции
Спасибо. Подскажите пожалуйста еще одну вещь. Есть два поля input, я сделал функцию которая отображает блок с ошибкой либо блок который называется success, в зависимости от того сколько символов введено в поле.
Для поля name все работает отлично, но для поля contacts ничего не работает.
<input id="name" class="text" type="text" name="name" onkeyup="CheckLength('name', 200);" />
<input id="contacts" class="text" type="text" name="contacts" onkeyup="CheckLength('contacts', 200);" />
function CheckLength(id, max)
{
var field = document.getElementById(id).value.length;
alert(document.getElementById('contacts').value.le ngth);
if(field > max)
{
clearTimeout(t);
switch(id)
{
case 'name' :
{
document.getElementById('name_success').style.disp lay = 'none';
document.getElementById('name_error').style.displa y = 'block';
document.getElementById('name_error').title = 'Превышено максимальное число символов - ' + max + '\nТекущее количество - ' + field; break;
}
case 'contacts' :
{
document.getElementById('contacts_success').style. display = 'none';
document.getElementById('contacts_error').style.di splay = 'block';
document.getElementById('name_error').title = 'Превышено максимальное число символов - ' + max + '\nТекущее количество - ' + field; break;
}
}
}
if(field <= max && field > 0)
{
switch(id)
{
case 'name' :
{
document.getElementById('name_success').style.disp lay = 'block';
document.getElementById('name_error').style.displa y = 'none'; break;
}
case 'contacts' :
{
document.getElementById('contacts_success').style. display = 'block';
document.getElementById('contacts_error').style.di splay = 'none'; break;
}
}
}
if(field == 0)
{
clearTimeout(t);
switch(id)
{
case 'name' :
{
document.getElementById('name_success').style.disp lay = 'none';
document.getElementById('name_error').style.displa y = 'block'; break;
}
case 'contacts' :
{
document.getElementById('contacts_success').style. display = 'none';
document.getElementById('contacts_error').style.di splay = 'block'; break;
}
}
}
}
Проверял через alert часть document.getElementById(id).value.length, в случае с name пишет число символов, а в случае с contacts пишет undefined
Разобрался, был еще li элемент с идом contacts, с ним путался
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot