Здравствуйте. Прошу помощи, заранее прошу не пинать в гугл и форумы по яваскриптам. Суть: есть чат на главной странице сайта (index.php), в который отправляю сообщения из TEXTAREA с помощью Ajax, есть причина не использовать INPUT. Но мне нужно максимально приблизить эту TEXTAREA к INPUT, т.е. отправлять данные в форму также по нажатию на ENTER, а не только по нажатию на кнопку. Приведу упрощенный код, чтобы не мешало ничего лишнего: Форма Код (PHP): <form action="shoutbox.php" method="post" id="shoutform" name="shoutform" onsubmit="return sendShout(this);"> <textarea onkeydown="if (event.keyCode==13) { shoutform.submit(); }" name="shout" id="shout"></textarea> <input type="submit" value="Отправить"> </form> Ну и на всякий случай код функции sendShout() Код (Text): function sendShout(formObj) { Shout = formObj.shout.value; if (Shout.replace(/ /g, '') == '') { alert('Вы должны вести сообщение!') return false } sb_Clear(); var ajax = new tbdev_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = "shoutbox.php"; ajax.setVar("do", "shout"); ajax.setVar("shout", escape(Shout)); ajax.method = 'GET'; ajax.element = 'shoutbox'; ajax.sendAJAX(varsString); return false } Если потребуется, то приведу часть кода обработчика shoutbox.php. Вообщем, проблема в том, что по нажатию на кнопку submit все нормально отправляется без перезагрузки страницы, а по нажатию на ENTER форма сабмитится странно, страница перезагружается, браузер направляет меня разглядвать shoutbox.php на весь экран, сообщение не добавляется, хотя у формы стоит onsubmit="return sendShout(this);". Что я делаю не так?
а почему у вас текстареа отправляется по ентеру? это элемент многострочного ввода. я захочу сделать перенос строки и опа - форма отправилась уже...
в этом и суть, моя задача сделать textarea почти неотличимой от инпута, мне не нужно многострочного ввода p.s. если это так сильно напрягает, то могу перефразировать задачу как "отправка по ctrl+enter" ) уж добавить событие на нажатие двух кнопок я в состоянии... это так, если кому нужен многострочный ввод, но проблема у меня не в этом
если вы не хотите перезагрузки страницы - у формы должно быть return false в текстарее по вводу ентера вызывается отправка формы, а не обработчик из отправки формы sendShout()
вот я этого начитался в гугле и сейчас... я, видимо, неверно понимаю Ваши слова. Можно ткнуть меня носом? В мой код написать что нужно. onkeydown="if (event.keyCode==13) { sendShout(); }" не работает, просто никаких эмоций. если пишу туда alert(), то работает
нет. даже при пустом поле ввода не вылазиет алерта, что я должен ввести сообщение. если так <input type="submit" value="Отправить">, то срабатывает sendShout().
я не знаю, что с этим еще можно сделать. просто гуглил и пробовал вызывать это событие разными скриптами и без скриптов, простыми путями и сложными. результат одинаков. сам скрипт трогать нет смысла, он же нормально работает при вызове другим методом
по идее нажатие кнопки срабатывает 100% может быть не срабатывает именно обработка "нажат ли энтер". кажется, копать надо в эту сторону.