Страницы: 1
На одном жутко полезном по содержанию фотофоруме провели реконструкцию, после которой перестали отправляться сообщения из 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"> <input name="tAutor" size="64" value="" maxlength="20" type="text"><br> Название сообщения: <input name="tMessagehed" size="64" maxlength="150" value="" type="text"> <p> <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> </td></tr> </table> </td></tr></table> </form> </body> </html>
Отсутствует
<script> function doAddMessage() { frm = document.forms['form3']; frm['ms_action'].value = "addnewmessage"; frm.submit(); } </script>
я может чего-то не понимаю, может кто-то просвятит, но после выполнения frm.submit(); должно выполняться action="". А его нет никакого. Как эта конструкция вообще может работать, или какой-то части кода не хватает, можно ссылочку?
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1
Отсутствует
Yan
Под ИЕ пробовал проверять? А то щас под Mozilla у них будет работать, а под ИЕ нет - будет смешно %)
жЫзнь рандомна... и ничего с этим не поделаешь ;)
Отсутствует
Там и ИЕ и Опера сейчас работает.
Скопипастил вроде всё.
Тема по этому поводу:
_http://www.mformat.com/forumcollr.asp?mf=2&mr=10&mt=7627
Только не надо там ругаться, ребята поддерживают суперский по содержанию форум, не хотелось бы им портить настроение, даже если что-то у них со скриптами не получается.))
Отсутствует
Подправил:
<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"> <input name="tAutor" size="64" value="" maxlength="20" type="text"><br>
Название сообщения: <input name="tMessagehed" size="64" maxlength="150" value="" type="text">
<p> <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>
<input class="submit" name="Button" type="button" onclick="this.disabled=true;doAddMessage()" value="Отправить"></td></tr>
</table>
</td></tr></table>
</form>
</body>
</html>
Только почему изначально не работало - не знаю.
RcT
При пустом action берется адрес текущей страницы.
Отсутствует
Yan
Я ж всего лишь спросил, зачем так сразу пугаться? %)
В первый раз ты кажется написал
<input type=submit>
а во второй раз
<input type=button>
Больше разницы я не заметил %)
Чем эти 2 типа отличаются? А то я уже не помню
Отредактировано Lynxx (17-04-2006 13:00:16)
жЫзнь рандомна... и ничего с этим не поделаешь ;)
Отсутствует
Lynxx
В первый раз было <input type=submit> и обработка onsubmit формы. Но я не учел, что в IE onsubmit "перебивалось" onclick="this.disabled=true;" у input'а.
Во второй раз по сравнению исходным примером я просто заменил button на input, и всё почему-то заработало.
Отсутствует
vladmir
В общем, предлагай дизайнерам решение Yan'а. Ток надо еще и под Оперой будет им проверить %)
Yan
Т.е. надо узнать разницу между <button> и <input> (насколько я помню, <button> так сказать, поглобальнее?) и между type=submit и type=button (а вот тут труднее %)). И тогда, возможно, мы поймем, почему там работает, а там - нет %)
жЫзнь рандомна... и ничего с этим не поделаешь ;)
Отсутствует
Элемент 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
Отсутствует
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>
А как можно проверить работоспособность? Это ведь сервер нужен? То есть советуем теоритически?
Отсутствует
vladmir
Работоспособность я проверял заполнив action="http://ya.ru". IE6, Firefox, Opera9 отработали нормально. Да и на пустом action тоже заметно, что страница перезагружается.
Проблема была в том, что в исходном варианте при нажатии на button вызывалась ненужная отправка формы, которая потом прерывалась с помощью onclick, и потом, уже из скрипта, форма повторно не отправлялась.
Когда же мы добавляем type="button", то button уже не вызывает отправку при нажатии, а отрабатывает только onclick.
Короче говоря, и по теории, и исходя их практики, всё должно работать нормально.
P.S. Я почитал, что они хотели этими изменениями как-то от спамеров бороться. Слабенькая я скажу защита... Можно даже сказать, совсем не защита..
Отсутствует
Когда же мы добавляем type="button", то button уже не вызывает отправку при нажатии, а отрабатывает только onclick.
Может проще класс submit убрать?
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
Yan
Спасибо за просветработу, сохраню темку себе, может сгодится тоже.
Поскольку на том конце есть и другая работа и нет желания вдаваться в детали, то, думаю, последует некая пауза а там видно будет. Вариант я передал, может пригодится.
ViRUS
Может проще класс submit убрать?
Но если коллективный разум сгенерирует ещё чего-нибудь, то хуже не будет
Отсутствует
ViRUS
Может проще класс submit убрать?
class="submit" отвечает за стилевое формление элемента. Он не влияет на type, который по умолчанию равен submit.
Отсутствует
class="submit" отвечает за стилевое формление элемента. Он не влияет на type, который по умолчанию равен submit.
Спасибо, что просвятил!
Непослушные локоны горничной выбивались из-под её кружевного фартука...
Отсутствует
Страницы: 1