Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.01.2009, 18:57
Интересующийся
Отправить личное сообщение для vovasvv Посмотреть профиль Найти все сообщения от vovasvv
 
Регистрация: 01.11.2008
Сообщений: 14

валидация формы (продолжение)
по Googlу "валидация формы" я нашел и переделал (как смог, к сожалению я далеко не гуру в яве Sad) под себя такой скрипт:

<script type="text/javascript" language="javascript">
function checkForm(form) {
// Заранее объявим необходимые переменные
var el, // Сам элемент
elName, // Имя элемента формы
value, // Значение
type; // Атрибут type для input-ов
// Массив списка ошибок, по дефолту пустой
var errorList = [];
// Хэш с текстом ошибок (ключ - ID ошибки)
var errorText = { 
5 : "поле 'Код': д.б. трехзначный числовой",
6 : "поле 'телефон': должен содержать 7 цифр"
}
// Получаем семейство всех элементов формы
// Проходимся по ним в цикле
for (var i = 0; i < form.elements.length; i++) {
el = form.elements[i];
elName = el.nodeName.toLowerCase();
value = el.value;
if (elName == "input") { // INPUT
// Определяем тип input-а
type = el.type.toLowerCase();
// Разбираем все инпуты по типам и обрабатываем содержимое
switch (type) {
case "text" : 
if (el.name == "Sfone" && (document.forma.Sfone.value.length < 3)||isNaN(document.forma.Sfone.value)) errorList.push(5);
if (el.name == "Lfone" && (document.forma.Lfone.value.length < 7)||isNaN(document.forma.Lfone.value)) errorList.push(6);
break; 
}
}
}
// Финальная стадия
// Если массив ошибок пуст - возвращаем true
if (!errorList.length) return true;
// Если есть ошибки - формируем сообщение, выовдим alert
// и возвращаем false
var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
for (i = 0; i < errorList.length; i++) {
errorMsg += errorText[errorList[i]] + "\n";
}
alert(errorMsg);
return false;
}
</script> --->


моя форма
<form name="forma" method="post" onsubmit="return checkForm(this);"> 

<p>Контактный мобильный телефон(10зн)*: +7-
<input type="text" name="Sfone" maxlength="3">-<input type="text" name="Lfone" maxlength="7"> "?"</p>

<input type="submit" name="submit" value="Ввести">
</form>


Если Вам не сложно, посмотрите пожалуйста следующий момент -
при введениеи в поля: <input type="text" name= "Sfone"> и <input type="text" name= "Lfone"> ЦИФР не удовлетворяющих условию - сообщение об ошибке выводится корректно, НО при введении БУКВ почему-то "сообщение об ошибке" циклится и выводится 7 раз, почему? Как изменить код чтобы избежать этого.
Спасибо!

Последний раз редактировалось Андрей Параничев, 05.01.2009 в 21:21. Причина: Пользуйтесь bb-тегами [js] и [html] для оформления листингов кода в теле сообщения
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2009, 21:32
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Зачем вы дергаете DOM (причем MSDOM, который будет работать только в IE), когда работаете с элементом в цикле?
Не работает скрипт, потому что условие стоит не правильное, смотрите сами:
if (el.name == "Sfone" && (el.value.length < 3)||isNaN(el.value)) errorList.push(5);

А поскольку:
true == false && false || true

То ошибка будет срабатывать на всех полях. Сгруппируйте условия скобками.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2010, 15:59
Новичок на форуме
Отправить личное сообщение для NoCash Посмотреть профиль Найти все сообщения от NoCash
 
Регистрация: 29.03.2010
Сообщений: 4

не работает((
у меня такая проблемаа. при неправльном заполнении алерт формируется и выводит что не заполненно но при нажатии ОК страничка перезагружается. подскажите в чем проблемма вот код
function checkForm(nb_form2) {
// Заранее объявим необходимые переменные
var el, // Сам элемент
elName, // Имя элемента формы
value, // Значение
type; // Атрибут type для input-ов
// Массив списка ошибок, по дефолту пустой
var errorList = [];
// Хэш с текстом ошибок (ключ - ID ошибки)
var errorText = {
1 : "Не заполнено поле 'Имя'",
2 : "Не заполнено поле 'заголоовк'",
3 : "не выбран город",
4 : "не выбрана категория и подкатегория",
5 : "оставьте тельчик либо мыло для связи с вами",
6 : "введите цену",
7 : "не введен текст объявления",
8 : "решите пример",
}
// Получаем семейство всех элементов формы
// Проходимся по ним в цикле
for (var i = 0; i < nb_form2.elements.length; i++) {
el = nb_form2.elements[i];
elName = el.nodeName.toLowerCase();
value = el.value;
if (elName == "input") { // INPUT
// Определяем тип input-а
type = el.type.toLowerCase();
// Разбираем все инпуты по типам и обрабатываем содержимое
switch (type) {
case "text" :
if (el.name == "gnl_user" && value == "") errorList.push(1);
if (el.name == "gnl_name" && value == "") errorList.push(2);
if (el.name == "gnl_city" && value == "") errorList.push(3);
if (el.name == "gnl_phone" && el.name == "gnl_email" && value == "") errorList.push(5);
if (el.name == "gnl_price" && value == "") errorList.push(6);
if (el.name == "code" && value == "") errorList.push(8);
break;
default :
// Сюда попадают input-ы, которые не требуют обработки
// type = hidden, submit, button, image
break;
}
} else if (elName == "textarea") { // TEXTAREA
if (value == "") errorList.push(7);
} else if (elName == "select") { // SELECT
if (value == 0) errorList.push(4);
} else {
// Обнаружен неизвестный элемент ;)
}
}
// Финальная стадия
// Если массив ошибок пуст - возвращаем true
if (!errorList.length) return true;
// Если есть ошибки - формируем сообщение, выовдим alert
// и возвращаем false
var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
for (i = 0; i < errorList.length; i++) {
errorMsg += errorText[errorList[i]] + "\n";
}
alert(errorMsg);
return false;
}
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2010, 20:55
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Функция активируется наверняка кликом по input type=submit , используйте type=buttin или return false

Последний раз редактировалось Aetae, 29.03.2010 в 21:15.
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2010, 12:51
Новичок на форуме
Отправить личное сообщение для NoCash Посмотреть профиль Найти все сообщения от NoCash
 
Регистрация: 29.03.2010
Сообщений: 4

спс дело было действительно в этом))
а не подскажете как вот сюда
if (el.name == "code" && value == "") errorList.push(6);

впихнуть проверку с аякса
function Refresh()
{
  if( req.readyState == 4 )
    ge('ajax').innerHTML = req.responseText;
    else
 ge('ajax').innerHTML = 'проверяем';


}

function Pusk()
{ 
var query; 
query ='code='+encodeURIComponent(ge('myid').value);
Request(query);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать disabled кнопки во время отправки формы? Bad Request Events/DOM/Window 7 16.04.2014 13:49
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 16:37
формирование обьекта или массива на основе полей формы birst Общие вопросы Javascript 1 05.12.2008 17:50
Обработка данных из формы в новом окошке diktator Events/DOM/Window 1 20.10.2008 12:51
Прошу помочь с проверкой формы ввода Гость Общие вопросы Javascript 2 08.03.2008 12:10