Автор Тема: Бесконечные алерты  (Прочитано 2423 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн KhasDenis

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 49
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Бесконечные алерты
« : 24 Января 2004, 11:02:11 »
Задача - проверить значения заносимые пользователем в форму.
Форма + обработчик ниже:

<html>
<
head>
<
script language="JavaScript">
function 
validateName(name) {
   
alert("validateName function has been called");
   if (
name.value.length == 10) {
      return 
true;
   } else {
      
alert("Invalid name format");
      
name.focus();
      return 
false;
   } 
}
function 
validateString(string) {
   var 
template = /\\d{7}/;
   
result string.value.match(template);
   if(
result == null){
      
alert("Invalid string format. Must be 7 digit");
      
string.focus();
      return 
false;
   }
}
</script>
</head>
<form action method="post">
Name: <input type="text" name="name" onBlur="validateName(this)">

String: <input type="text" name="string" onBlur="validateString(this)">

Name2: <input type="text" name="name2" onBlur="validateName(this)">

Address: <input type="text" name="address">

<input type="submit" name="submit" value="Submit">
</form>
</html>

Я ввожу в первое поле неправильное значение, кликаю таб. И дальше только сижу и тыкаю "OK" на алертах.
Что у меня не так? Когда лучше проверять значения на правильность (onBlur, onChange, onSubmit)?
Спасибо заранее ...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Бесконечные алерты
« Ответ #1 : 24 Января 2004, 15:21:16 »
я предпочитаю делать через событие onsubmit.
Примеров на этом форуме я привел достаточно.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Nickii

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 218
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.srccode.spb.ru
Бесконечные алерты
« Ответ #2 : 25 Января 2004, 00:21:08 »
Вообще-то при вызове alert\'a элемент тоже теряет фокус (замкнутый круг какой-то получается :).


Таким образом ты должен придумать автоматическую замену не правильной комбинации или

 
Цитировать
делать через событие onsubmit


второй вариант попробуй установить дополнительный флаг изменения строки

третий вариант поставить проверку не на onBlur а на onChange

четвертый вариант поставить проверку на onKeyDown

пятый вариант... Думаю пока достаточно будет.

P.S. Примени мозги по назначению... :)

И кстати проверь на существование функцию focus, я не помню, вдруг focused?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28