Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2010, 05:54
Новичок на форуме
Отправить личное сообщение для Ordinatuer Посмотреть профиль Найти все сообщения от Ordinatuer
 
Регистрация: 05.12.2010
Сообщений: 3

Проблемы JS при проверке полей формы
Здравстуйте!
Имеется небольшая форма:

<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" при этом работает как надо.

Последний раз редактировалось Ordinatuer, 05.12.2010 в 19:41.
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2010, 16:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ordinatuer,
А где элемент id = 'errors' ?
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2010, 19:46
Новичок на форуме
Отправить личное сообщение для Ordinatuer Посмотреть профиль Найти все сообщения от Ordinatuer
 
Регистрация: 05.12.2010
Сообщений: 3

Это просто отладка - можно заменить его алертом. Что в лоб, что по лбу.
Полдня убил, ничего не нашёл... Сделал по-другому.
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2010, 20:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Ordinatuer,
Не нужно использовать в качестве имени элемента массива обьект
a = document.getElementById('name'); toString = [object HTMLInputElement]

b = document.getElementById('email'); toString = [object HTMLInputElement]

c = document.getElementById('text'); toString = [object HTMLTextAreaElement]

отсюда sizeError[b] = sizeError[a]
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2010, 21:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Дюже долгая подготовка к анализу полей... Как вариант вообще все анализировать в онсубмит...
Ответить с цитированием
  #6 (permalink)  
Старый 06.12.2010, 04:18
Новичок на форуме
Отправить личное сообщение для Ordinatuer Посмотреть профиль Найти все сообщения от Ordinatuer
 
Регистрация: 05.12.2010
Сообщений: 3

Да, действительно... Надо бы мне в учебных материалах тереться, а не тут. Спасибо за участие.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка полей отправляемой формы. denisOgr jQuery 6 18.10.2010 19:40
Открытие полей формы при выборе определенного radio rolph Events/DOM/Window 4 15.06.2010 18:32
Проблемы с кодировкой при передаче данных во фрейм из js Why? Internet Explorer 12 02.06.2009 16:23
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
проверка полей формы!!!! DENAT Общие вопросы Javascript 0 05.06.2008 22:14