Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает проверка формы в IE 
V
    Опции темы
atomdx
Дата 23.2.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Здравствуйте, 
я не силен в javascript, взял готовый скрипт проверки формы из книги:
Код

(function() {
  if (window.addEventListener) window.addEventListener("load", init, false);
  else if (window.addEventListener) window.attachEvent("onload", init);

  function init() {
    for(var i = 0; i < document.forms.length; i++) {
        var f = document.forms[i];

        var needsValidation = false;

        for (j = 0; j < f.elements.length; j++) {
          var e = f.elements[j];

          if (e.type != "text") continue;
          var pattern = e.getAttribute("pattern");
          // Можно бало бы использовать e.hasAttribute()
          // но IE не поддерживает его
          var required = e.getAttribute("required") != null;

          if (required && !pattern) {
              pattern = "\\S";
              e.setAttribute("pattern", pattern);
          }

          if (pattern) {
              e.onchange = validateOnChange;
              needsValidation = true;
          }
        }

        if (needsValidation) f.onsubmit = validateOnSubmit;
    }
  }

  function validateOnChange() {
      var textfield = this;
      var pattern = textfield.getAttribute("pattern");
      var value = this.value;

      if (value.search(pattern) == -1) textfield.className = "invalid";
      else textfield.className = "valid";
  }

  function validateOnSubmit() {
  var invalid = false;

  for(var i = 0; i < this.elements.length; i++) {
      var e = this.elements[i];

      if (e.type == "text" && e.onchange == validateOnChange) {
          e.onchange( );

          if (e.className == "invalid") invalid = true;
      }
  }

  if (invalid) {
      alert("Форма заполнена не полностью " +
            "или были введены некорректорные данные.\n" +
            "Пожалуйста, проверьте правильность выделенных полей " +
            "и повторите попытку.");
      return false;
  }
  }
})();


В 16 строчке кода написано, что можно было бы использовать e.hasAttribute(), но это не работает в IE. Но и без использования e.hasAttribute() скрипт не работает ни в одной версии IE. В чём ошибка не знаю. Буду благодарен, если подскажите.
PM MAIL ICQ   Вверх
12345c
Дата 1.3.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 6
Всего: 101



Потому что в 3-й строчке пропущен значок "!". Надо
Код

else if (!window.addEventListener) window.attachEvent("onload", init);

А вообще - совет - класть рабочий код. У меня было 5 минут, чтобы дописать HTML и разобраться, какой, а у других не будет.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
atomdx
Дата 1.3.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Спасибо огромное!  smile
Цитата

А вообще - совет - класть рабочий код.

Исправлюсь

Странно, но в книге знака "!" нет. Опечатка наверно.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.