Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Не получили
письмо с кодом активации
?
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Начало
Помощь
Поиск
Календарь
Вход
Регистрация
Forum Webscript.Ru
»
Программирование
»
JavaScript & JScript
»
совпадение имен
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: совпадение имен (Прочитано 7916 раз)
0 Пользователей и 1 Гость просматривают эту тему.
teq
Заглянувший
Новичок
Сообщений: 8
+0/-0
0
совпадение имен
«
:
09 Апреля 2006, 14:08:43 »
В процессе отправки формы мне нужно менять адрес. Что я делаю соотв в скрипте при помощи document.forms[0].action = "new url";
но в тексте есть и
, которую необходимо сохранить. При наличии этой надписи обращение к action формы воспринимается на обращение к input action.
общий вид:
...
...
что сделать, чтобы они не конфликтовали?
или возможно, как по-другому изменять адрес отправки формы?
Записан
for_i_0
$15 per hour
Глобальный модератор
Ветеран
Сообщений: 555
+0/-0
2
совпадение имен
«
Ответ #1 :
09 Апреля 2006, 18:43:36 »
изменить значение атрибута name в hidden.
Записан
[off]Безработный[/off]
teq
Заглянувший
Новичок
Сообщений: 8
+0/-0
0
совпадение имен
«
Ответ #2 :
09 Апреля 2006, 18:52:03 »
хехе )) ну этт-то понятно..только вот при изменение имени этого атрибута скрипт php (чужой, шифрованный, страшный) не хочет все это кушать. ((
Записан
html_coder
Фанат форума
Старожил
Сообщений: 427
+0/-0
0
совпадение имен
«
Ответ #3 :
10 Апреля 2006, 10:48:01 »
Возможно, то, что я сейчас предложу это изврат, но это рабочий вариант и если ты не можешь менять тот зашифрованный PHP скрипт, то он вполне тебе подойдёт, да и вообщем вполне нормальный способ.
Я сам часто сталкивался с такой проблемой, лучше конечно стараться не называть переменные внутри формы, так чтобы они совпадали с её свойствами или методами
<
script language
=
"JavaScript"
type
=
"text/javascript"
>
function
check
()
{
//Объект - форма
HTMLFormElelment
=
document
.
forms
[
0
];
//Объект input
firstInput
=
HTMLFormElelment
.
childNodes
[
1
];
//Просто устанавливаем атрибут name у этого input в пустую строку
firstInput
.
setAttribute
(\
'name\', \'\');
HTMLFormElelment.action = \'any\';
//Меняем обратно
firstInput.setAttribute(\'name\', \'action\');
//Submit формы
HTMLFormElelment.submit();
}
</script>
<form action="<?=$_SERVER[\'PHP_SELF\']?>">
<input name="action" type="hidden" value="Add">
<input name="subm_btn" type="button" value="submit"onclick="check()">
<form>
Записан
Shade_Wolfen
Заглянувший
Новичок
Сообщений: 11
+0/-0
0
совпадение имен
«
Ответ #4 :
10 Апреля 2006, 17:24:03 »
Проще просто форме добавить id и этому id изменить атребут action.
Записан
html_coder
Фанат форума
Старожил
Сообщений: 427
+0/-0
0
совпадение имен
«
Ответ #5 :
10 Апреля 2006, 18:01:04 »
Shade_Wolfen
если ты имеешь что надо у формы добавить атрибут id
т.е. id="my_form", а потом получить при помощи document.getElementById(\'my_form\') саму форму а следом и её атрибут, то поверь мне что это не изменит данной ситуации и работать всё равно не будет, можешь попробовать....
Записан
Shade_Wolfen
Заглянувший
Новичок
Сообщений: 11
+0/-0
0
совпадение имен
«
Ответ #6 :
10 Апреля 2006, 18:18:45 »
Точно, даже через getAttribute() выдает объект, а не значение. Интересно проявляется он только в IE или нет.
Записан
teq
Заглянувший
Новичок
Сообщений: 8
+0/-0
0
совпадение имен
«
Ответ #7 :
10 Апреля 2006, 19:39:08 »
html_coder
слу, спасиб. еще такой вопрос: это с применением XML? У меня он спотыкается по неизвестной пока причине (не исключая версию кривых рук)) ) на строке с заданием пустой строки в name..
может (если XML) еще какую-то запись вверх добавить надо? не приходилось с ним работать.(
в чем может быть причина?
Записан
html_coder
Фанат форума
Старожил
Сообщений: 427
+0/-0
0
совпадение имен
«
Ответ #8 :
11 Апреля 2006, 10:07:50 »
Это не XML, это DOM + JavaScript. Я его проверял только в FireFox, а потом посмотрел а IE, действительно спотыкается, сегодня попробую понять почему, вообще осёл это отдельная песня )))) О результатах сообщу...
Записан
hanslinger
H2Oer
Ветеран
Сообщений: 1148
+0/-0
2
совпадение имен
«
Ответ #9 :
11 Апреля 2006, 10:20:32 »
А почему бы не пройтись циклом по forms[0].children?
Записан
Shade_Wolfen
Заглянувший
Новичок
Сообщений: 11
+0/-0
0
совпадение имен
«
Ответ #10 :
11 Апреля 2006, 13:09:53 »
Ты тогда пройдешься по вложенным элементам, а нужно изменить как раз корневой - форму, но как ни крути, он в упор не хочет видеть свойство, если есть элемент с таким-же именем.
Записан
html_coder
Фанат форума
Старожил
Сообщений: 427
+0/-0
0
совпадение имен
«
Ответ #11 :
11 Апреля 2006, 14:40:57 »
Ну вот я покрутил вроде как и накрутил )))
<!
DOCTYPE HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html
>
<
head
>
<
title
>
Untitled
</
title
>
<
script language
=
"JavaScript"
type
=
"text/javascript"
>
function
check
()
{
//Объект - форма
HTMLFormElement
=
document
.
forms
[
0
];
/*
* Объект input для IE, если надо для FF это будет HTMLFormElement.childNodes[1]
* По всей видимости это происходит из-за того, что они по-разному строят дерево документов
* Т.е. для того, чтобы достичь совместимости я думаю лучше всего убрать перенос строки после тега <form ...>
*/
firstInput
=
HTMLFormElement
.
childNodes
[
0
];
//Удаляем объект <input name="action" type="hidden" value="Add"> из дерева документа вообще!
HTMLFormElement
.
removeChild
(
firstInput
);
//Меняем action у формы
HTMLFormElement
.
action
= \
'any.php\';
//А вот здесь вновь его восстанавливаем его обратно, чтобы он был после сабмита
firstInput = document.createElement(\'input\');
//Устаналиваем атрибуты обратно в старые значения
firstInput.setAttribute(\'name\', \'action\');
firstInput.setAttribute(\'value\', \'Add\');
firstInput.setAttribute(\'type\', \'hidden\');
//Добавляем созданный элемент к форме
HTMLFormElement.appendChild(firstInput);
//Submit формы
HTMLFormElement.submit();
}
</script>
</head>
<body>
<form action="<?=$_SERVER[\'PHP_SELF\']?>">
<input name="action" type="hidden" value="Add">
<input name="subm_btn" type="button" value="submit"onclick="check()">
</form>
</body>
</html>
Записан
html_coder
Фанат форума
Старожил
Сообщений: 427
+0/-0
0
совпадение имен
«
Ответ #12 :
11 Апреля 2006, 15:41:47 »
А вот родился просто супер короткий вариант функции check, работающий в IE и FF (подсказали соседи
)
function check ()
{
var HTMLFormElement = document.forms[0];
form_action_attribute = HTMLFormElement.getAttributeNode(\'action\');
form_action_attribute.value = \'any.php\';
HTMLFormElement.submit();
}
Записан
teq
Заглянувший
Новичок
Сообщений: 8
+0/-0
0
совпадение имен
«
Ответ #13 :
13 Апреля 2006, 13:33:55 »
))) спасибо большое, все работает отлично
IE, FF, Opera
))
Записан
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Forum Webscript.Ru
»
Программирование
»
JavaScript & JScript
»
совпадение имен
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