Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как вернуть фокус на элемент после валидации формы


Автор: Janita 3.3.2005, 14:06
Есть функция, которая по onchange проверяет введенное значение, как сделать так, что если значение неправильное, то фокус остается в том же поле ввода, а не переходит на следующее? Понимаю, что вопрос элементарный, но следующий код у меня не работает не могу понять почему.
Код

<html>
<head>
<script language="Javascript">
function validation(pattern,len, field){  
 var value=field.value;
 var str=value.replace(/[@!$%&*()+=\/\^\\]/g, '');
 str=str.replace(/\s{2,}/,' ');
 var result=str.match(pattern);
 if ((result ==null)||(str.lenght != len)){
   field.focus();  
   alert('Неправильный формат');  
   field.focus();  
   return 0;
 }else{  
   return result;
 }
}

</script>
</head>
<body>
 <form name="testform" action="" method="post" enctype="multipart/form-data">
<table>
 <tr>
   <td>seria:</td>
   <td><input name="seria" onchange="validation('/\d{2}\s+\d{2}/', 5, this)"/></td>
 </tr>

 <tr>
   <td>number:</td>
   <td><input name="num" onchange="validation('/\d{6}/', 6, this)"/></td>
 </tr>
</table>
 </form>
</body>
</html>


Автор: Aliance 4.3.2005, 19:22
Читай здесь http://forum.vingrad.ru/index.php?showtopic=36336

...

Код

...
     alert("Что-то неверно <_<.");
     setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
     return false;
...
function focusElement(formName, elemName) {
 var elem = document.forms[formName].elements[elemName];
 elem.focus();
 elem.select();
}
...

Автор: Janita 5.3.2005, 08:22
Огромное спасибо! Вы мне очень помогли, я уже не знала что и придумать.
А для чего надо вызывать функцию setTimeout? почему без нее не работает?

Автор: Aliance 5.3.2005, 21:45
Это задержка для IE... Без нее может некооректно работать

Автор: Иль 17.3.2005, 09:54
Цитата
Это задержка для IE... Без нее может некооректно работать
Ужас как бывает приятно и полезно рыться в поиске. Тоже мучался этим вопросом smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)