Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№115-04-2006 18:19:51

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Не срабатывает "отправить" на форуме. JavaScript

На одном жутко полезном по содержанию фотофоруме провели реконструкцию, после которой перестали отправляться сообщения из SeaMonkey. В IE, как не трудно догадаться, проблем нет. Опять же, как не трудно догадаться, владелец считает, что это проблемы Симки.

Посмотрите, пожалуйста, кто рубит в скриптах, - что посоветовать исправить владельцу (в скрипте))).
Вот, выцарапал примерно часть кода с формой:

Выделить код

Код:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
function doAddMessage() {
	frm = document.forms['form3'];
	frm['ms_action'].value = "addnewmessage";
	frm.submit();
}
</script>
<title>t</title></head><body>

<form name="form3" method="post" action=""> 
<input name="ms_action" value="" type="hidden">

<table bgcolor="#000000" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr bgcolor="#999999">
<td align="center">Новое сообщение</td></tr>
<tr bgcolor="#efefef">

<td align="center" valign="top">&nbsp; <input name="tAutor" size="64" value="" maxlength="20" type="text"><br>
Название сообщения:&nbsp;&nbsp;<input name="tMessagehed" size="64" maxlength="150" value="" type="text">
<p>&nbsp;<textarea name="tMessagetext" cols="60" rows="10"></textarea></p>
<p><input name="tsentM" value="1" checked="checked" type="checkbox"> получать извещения на e-mail о сообщениях по этой теме</p>

<button class="submit" name="Button" onclick="this.disabled=true;doAddMessage()">Отправить</button>&nbsp;

</td></tr>
</table>
</td></tr></table>
</form>
</body>
</html>

Отсутствует

 

№217-04-2006 11:28:27

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Не срабатывает "отправить" на форуме. JavaScript

Выделить код

Код:

<script>
function doAddMessage() {
    frm = document.forms['form3'];
    frm['ms_action'].value = "addnewmessage";
    frm.submit();
}
</script>
Выделить код

Код:

<form name="form3" method="post" action="">

я может чего-то не понимаю, может кто-то просвятит, но после выполнения frm.submit(); должно выполняться action="". А его нет никакого. Как эта конструкция вообще может работать, или какой-то части кода не хватает, можно ссылочку?


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1

Отсутствует

 

№317-04-2006 12:35:33

Merlyel
псЫх
 
Группа: Extensions
Откуда: Уфа
Зарегистрирован: 20-12-2005
Сообщений: 2415

Re: Не срабатывает "отправить" на форуме. JavaScript

Yan
Под ИЕ пробовал проверять? А то щас под Mozilla у них будет работать, а под ИЕ нет - будет смешно %)


жЫзнь рандомна... и ничего с этим не поделаешь ;)

Отсутствует

 

№417-04-2006 12:38:09

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

Lynxx
Гм. Еще не проснулся. Спасибо.  :) Пост удаляю.

Отсутствует

 

№517-04-2006 12:44:52

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Re: Не срабатывает "отправить" на форуме. JavaScript

Там и ИЕ и Опера сейчас работает.
Скопипастил вроде всё.
Тема по этому поводу:
_http://www.mformat.com/forumcollr.asp?mf=2&mr=10&mt=7627
Только не надо там ругаться, ребята поддерживают суперский по содержанию форум, не хотелось бы им портить настроение, даже если что-то у них со скриптами не получается.))

Отсутствует

 

№617-04-2006 12:53:43

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

Подправил:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
function doAddMessage() {
    frm = document.forms['form3'];
    frm['ms_action'].value = "addnewmessage";
    frm.submit();
}
</script>
<title>t</title></head><body>

<form name="form3" method="post" action="">
<input name="ms_action" value="" type="hidden">

<table bgcolor="#000000" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr bgcolor="#999999">
<td align="center">Новое сообщение</td></tr>
<tr bgcolor="#efefef">

<td align="center" valign="top">&nbsp; <input name="tAutor" size="64" value="" maxlength="20" type="text"><br>
Название сообщения:&nbsp;&nbsp;<input name="tMessagehed" size="64" maxlength="150" value="" type="text">
<p>&nbsp;<textarea name="tMessagetext" cols="60" rows="10"></textarea></p>
<p><input name="tsentM" value="1" checked="checked" type="checkbox"> получать извещения на e-mail о сообщениях по этой теме</p>

<button class="submit" name="Button" onclick="this.disabled=true;doAddMessage()">Отправить</button>&nbsp;
<input class="submit" name="Button" type="button" onclick="this.disabled=true;doAddMessage()" value="Отправить">

</td></tr>
</table>
</td></tr></table>
</form>
</body>
</html>

Только почему изначально не работало - не знаю.
RcT
При пустом action берется адрес текущей страницы.

Отсутствует

 

№717-04-2006 12:54:26

Merlyel
псЫх
 
Группа: Extensions
Откуда: Уфа
Зарегистрирован: 20-12-2005
Сообщений: 2415

Re: Не срабатывает "отправить" на форуме. JavaScript

Yan
Я ж всего лишь спросил, зачем так сразу пугаться? %)
В первый раз ты кажется написал

<input type=submit>

а во второй раз

<input type=button>

Больше разницы я не заметил %)
Чем эти 2 типа отличаются? А то я уже не помню ;)

Отредактировано Lynxx (17-04-2006 13:00:16)


жЫзнь рандомна... и ничего с этим не поделаешь ;)

Отсутствует

 

№817-04-2006 13:01:28

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

Lynxx
Ну а я всего лишь проверил, и испугался. :)

Отсутствует

 

№917-04-2006 13:08:58

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

Lynxx
В первый раз было <input type=submit> и обработка onsubmit формы. Но я не учел, что в IE onsubmit "перебивалось" onclick="this.disabled=true;" у input'а.
Во второй раз по сравнению  исходным примером я просто заменил button на input, и всё почему-то заработало.

Отсутствует

 

№1017-04-2006 13:19:26

Merlyel
псЫх
 
Группа: Extensions
Откуда: Уфа
Зарегистрирован: 20-12-2005
Сообщений: 2415

Re: Не срабатывает "отправить" на форуме. JavaScript

vladmir
В общем, предлагай дизайнерам решение Yan'а. Ток надо еще и под Оперой будет им проверить %)
Yan
Т.е. надо узнать разницу между <button> и <input> (насколько я помню, <button> так сказать, поглобальнее?) и между type=submit и type=button (а вот тут труднее %)). И тогда, возможно, мы поймем, почему там работает, а там - нет %)


жЫзнь рандомна... и ничего с этим не поделаешь ;)

Отсутствует

 

№1117-04-2006 14:37:00

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Не срабатывает "отправить" на форуме. JavaScript

Элемент BUTTON создает кнопку формы. Он может содержать любые текстовые элементы, кроме A, BUTTON, IFRAME, INPUT, LABEL, SELECT и TEXTAREA, и любые блочные элементы, кроме FORM и FIELDSET. Он может содержаться в любых текстовых и блочных элементах, кроме BUTTON.

Кнопки, созданные этим элементом, подобны кнопкам, созданным элементом INPUT, но они могут иметь содержимое.
Атрибут type  задает тип кнопки:

submit
    Кнопка пересылки формы (принято по умолчанию).
reset
    Кнопка сброса формы.
button
    Кнопка общего вида.

Существуют три типа кнопок:

    * кнопки пересылки формы: при нажатии пересылают форму для обработки серверу;
    * кнопки сброса формы: при нажатии инициализируют форму, сбрасывая значения всех ее элементов в начальные;
    * кнопки общего вида: при нажатии на такую кнопку происходит вызов связанного с этим событием сценария.

Отредактировано RcT (17-04-2006 14:38:55)


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1

Отсутствует

 

№1217-04-2006 15:08:23

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

На самом деле в исходном примере достаточно было указать у button type="button":

<button type="button" class="submit" ...

Отсутствует

 

№1317-04-2006 18:41:27

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Re: Не срабатывает "отправить" на форуме. JavaScript

Lynxx

Ток надо еще и под Оперой будет им проверить

Боюсь именно "им проверить" - может не сработать.) Надо бы что-то наверняковое забацать.

Ещё я не сохранял форму до изменений. Тогда же отправлялось изо всех браузеров, но как-то очень странно доходило - после отправки выдавалась не обновлённая стр с новым постом, а страница ошибок. Ты думал, что сообщение не отправилось, возвращался, отправлял ещё, а потом ещё и оказывалось, что все посты добавились. Мне кажется, что проблема была не в форме самой по себе, а где-то на стороне сервера, там исправили, а по ходу дела пострадала форма.

Напишу о варианте заменить

<button class="submit" name="Button" onclick="this.disabled=true;doAddMessage()">Отправить</button>

на
<button type="button" class="submit" name="Button" onclick="this.disabled=true;doAddMessage()">Отправить</button>

А как можно проверить работоспособность? Это ведь сервер нужен? То есть советуем теоритически?

Отсутствует

 

№1417-04-2006 18:59:41

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

vladmir
Работоспособность я проверял заполнив action="http://ya.ru". IE6, Firefox, Opera9 отработали нормально. Да и на пустом action тоже заметно, что страница перезагружается.

Проблема была в том, что в исходном варианте при нажатии на button вызывалась ненужная отправка формы, которая потом прерывалась с помощью onclick, и потом, уже из скрипта, форма повторно не отправлялась.

Когда же мы добавляем type="button", то button уже не вызывает отправку при нажатии, а отрабатывает только onclick.

Короче говоря, и по теории, и исходя их практики, всё должно работать нормально.

P.S. Я почитал, что они хотели этими изменениями как-то от спамеров бороться. Слабенькая я скажу защита... Можно даже сказать, совсем не защита..

Отсутствует

 

№1518-04-2006 09:56:19

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Не срабатывает "отправить" на форуме. JavaScript

Когда же мы добавляем type="button", то button уже не вызывает отправку при нажатии, а отрабатывает только onclick.

Может проще класс submit убрать?


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№1618-04-2006 13:26:41

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Re: Не срабатывает "отправить" на форуме. JavaScript

Yan
Спасибо за просветработу, сохраню темку себе, может сгодится тоже.

Поскольку на том конце есть и другая работа и нет желания вдаваться в детали, то, думаю, последует некая пауза а там видно будет. Вариант я передал, может пригодится.
ViRUS

Может проще класс submit убрать?

Но если коллективный разум сгенерирует ещё чего-нибудь, то хуже не будет :)

Отсутствует

 

№1718-04-2006 15:57:23

Yan
Участник
 
Группа: Extensions
Откуда: Москва
Зарегистрирован: 27-02-2005
Сообщений: 1019

Re: Не срабатывает "отправить" на форуме. JavaScript

ViRUS

Может проще класс submit убрать?

class="submit" отвечает за стилевое формление элемента. Он не влияет на type, который по умолчанию равен submit.

Отсутствует

 

№1818-04-2006 22:51:01

vladmir
SeaMonkey - вот это браузер
 
Группа: Extensions
Откуда: НН
Зарегистрирован: 16-10-2004
Сообщений: 4630

Re: Не срабатывает "отправить" на форуме. JavaScript

Yan

Уже зафурычило, спасибо, помогло! :)

Отсутствует

 

№1919-04-2006 05:18:41

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Не срабатывает "отправить" на форуме. JavaScript

class="submit" отвечает за стилевое формление элемента. Он не влияет на type, который по умолчанию равен submit.

Спасибо, что просвятил!


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]