Обработчик форм, не выходит свич

igortik

Новичок
Обработчик форм, не выходит свич

Задача:

Определение значения переменной act в JS в зависимости от того, с какой формой в данный момент работаем.

Реализация:

PHP:
//Передаем функции какую форму используем
function check_form(form_id)
{	
        //определяем заполнено ли поле с именем
	var noname = !form_id.name.value;
	
       //стили при длине строки в 0
	if(noname) 
		{
		form_id.name.style.border='solid';
		form_id.name.style.color='#FF0000';
		form_id.name.value='Укажите наименование';
		}
		else
		{
                //Все ок, поле заполнено, выбираем теперь с какой таблицей работаем и, в зависимости от значения, задаем значение переменной act для передачи в форму в качестве action
		switch(form_id)
			{
			//alert(form_id);
			case addform :
			var act = "<?php echo $file?>"+"?do=add_to&page_id="+"<?php echo $_GET['page_id']?>";
			break;
			case editform :
			var act = "<?php echo $file?>"+"?do=edit_id_where&page_id="+"<?php echo $_GET['page_id']?>"+"&id="+"<?php echo $_POST['id']?>";
			alert(act);
			break;
			}
		
		form_id.action = act;
		form_id.submit();
		}
}

Результат:

FireBug говорит, что addform is not defined 
и скрипт не работает.

Ну то понятно, что он не определен, т.к. его попросту нет, почему свич не работает корректно?
 

igortik

Новичок
Активист
Пробовал

Вот что получается:
Куда проискодит action в форме
http://localhost/admin/undefined

Т.е. это происходит при том, что код выше сохраняем, но берем в кавычки, как ты говоришь! :(
Увы...

Код форм:

<form id="addform" method="post" enctype="multipart/form-data" action="" name="addform">
</form>

<form id="editform" method="post" enctype="multipart/form-data" action="" name="editform">

-~{}~ 21.10.08 19:00:

Т.е. переменная act пустая.

В свиче выбирается значение по дефолту в таком случае!

-~{}~ 21.10.08 19:01:

А именно - ничего не выбирается, т.к. дефолт не установлен и значение act не присваивается :(
 

dimagolov

Новичок
igortik, прежде чем с любой проблемой бежать на форум, то включи мозг и подумай минимум 5 минут.

alert(form_id);
 

igortik

Новичок
dimagolov
не могу понять, что не так.

Ок, одна ошибка пусть была в OnClick, я не передал функции параметр.

Делаем так:
onClick="check_form('addform');" в форме.

Теперь я получаю:

check_form is not defined.
Почему она не определена - не пойму.

-~{}~ 21.10.08 19:56:

Активист
Чек_форм функция - для анализа наличия в поле name формы текста, если текста нет, то выводим стили для поля с подчеркиванием ошибки, если текст присутствует, то через свич смотрим какая из форм стоит (check_form('addform'); check_form('editform');) и в зависимости от этого выбираем какой установить action для формы.

-~{}~ 21.10.08 19:58:

потом уже сабмитим форму
 

igortik

Новичок
MiRacLe
спасибо!
полезно, буду смотреть!

p.s. конечно, хотелось бы оперативно решение найти.
 

igortik

Новичок
Задам вопрос иначе.
1. Есть форма

<form id="addform">
<input id="name" name="name">
</form>

2. Есть ссылка <a href="#" onClick="check_form('addform')">

3. Есть функция:

function check_form(form_id)
{
alert(document.form_id.name.value)
}

Т.е. онклик передает в функцию имя формы, а алерт должен показать значение поля name.

Что я не так делаю? document.form_id is undefined
Если сделать просто alert(document.addform.name.value) то все ок!
Если сделать alert(form_id) то отображается addform как и должно быть.

Почему addform не передается в данном случае сюда alert(document.form_id.name.value) ?
 

igortik

Новичок
1. Есть форма

<form id="addform">
<input id="name" name="name">
</form>

2. Есть ссылка <a href="#" onClick="check_form('addform')">

3. Есть функция:

function check_form(form_id)
{
alert(document.form_id.name.value)
}

Итак.
- По нажатию на ссылку стартует выполнение функции
- Функции check_form передается параметр, в нашем случае это addform
- Делаем alert внутри функции для проверки был ли передан параметр:

function check_form(form_id)
{
alert(form_id);
}

Везультат: открывается окно с выводом значения addform,
т.е. значение addform было успешно передано в функцию check_form(form_id) (form_id - это как раз сейчас и есть наше значение addform).

- Далее я понимаю, что form_id присвоено значение addform и можно обратиться к самой форме для ее анализа!

- Усложняю функцию:

function check_form(form_id)
{
alert(form_id);
alert(document.form_id.name.value)
}

- 1 алерт выводит addform в окне
- 2 алерт не происходит. FireBug пишет - document.form_id is not defined

ПОЧЕМУ ?

если в переменная form_id сейчас имеет значение addform, то по сути в функции должно быть так: alert(document.addform.name.value)

Ято я делаю не так?
P.S. Мне всего-то необходимо, чтобы переменной form_id присваивалось значение, которое входит в функцию извне!
Собственно, оно присваивается, об этом говорит alert(form_id);

А вот в alert(document.form_id.name.value) оно не устанавливается.

Как так? Как сделать так, чтобы alert(document.СЮДА.name.value) было передано значение, которое входит для обработки функции извне? (onClick="check_form('addform')")
 

dimagolov

Новичок
igortik, ты чукча который писатель? тебе же FB3 сказал, что надо делать.

еще раз для чукчи, может снизойдет и прочитает. нельзя полагаться на document.elem, formObject.input_elem, надо использовать getElementById или стандартные коллекции, например formObject.elements[]
 

MiRacLe

просто Чудо
Вы втроём чукчи.

igortik - я привёл небольшой кусок кода, который НЕПРЕМЕННО надо выполнить и подумать над результатом. Я верю что у тебя всё получится.

А остальным немного потерпеть со своими советами и много думать прежде чем нажимать на кнопку "Ответить".
 

FB3

Новичок
Другими словами, такого элемента document.form_id в документе нету.
http://htmlbook.ru/html/form.html
Вот здесь почитай к примеру или вообще найди какие-нить основы javascript.
 

MiRacLe

просто Чудо
Да заткнёшься ты или нет? Насморк ты тоже через анус лечишь?
 

igortik

Новичок
FB3
Ты целиком прав!
В пхп я бы сделал так: echo 'document'.$form_id.'name.value' (это образно говоря).
Я в JS новичок! Не хотелось бы сейчас полностью отдаваться его изучению, просто хотел прикрутить себе дружественный интерфейс обработки форм! Для одной формы написал уже, все работает. Просто хочу совместить все в 1 обработчик.

-~{}~ 22.10.08 20:43:
 

igortik

Новичок
MiRacLe
Извини, Миракл.
Я уже злой от это бредятины, устал уже, не пойму кто куда что пишет.

Привык уже просто, что на этом форуме одни Гуру и "любят помогать другим" мегабайтами пустого текста.

Еще раз извини

-~{}~ 22.10.08 20:49:

MiRacLe
Я пропустил твое сообщение после голова.
Спасибо за направление в нужное русло!
 
Сверху