[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отправка формы по Enter
l@pteff
всем привет, помогите "распутать" вот что: есть форма с полем "message" для ввода сообщений и два варианта отправки сообщения на сервер: по Enter и через submit. Вот скрипт, пробовал его по-разному изменять, но полного соответствия условиям так и не добился.


<input type="checkbox" name="enter" id="otpr" checked="checked">
<label
for="otpr"> Отправка по Enter</label>

<textarea
rows="10" cols="151" name="message" id="message" style="border:5px solid #0066FF" onkeyPress="if(event.keyCode==13&&$('#otpr').attr('checked')&&$('#message').val( )!=='') {
otpr_ajax();
}"
>
</textarea>
<input
type="submit" value="Сказать">



$(function(){ <!--отправка кнопкой-->
$(':submit').click(function(e){
e.preventDefault();
if ($('#message').val()!=='') {
otpr_ajax();
}
else {return false;}
}
);





Спустя 2 минуты, 28 секунд (1.04.2011 - 12:09) alex12060 написал(а):
<textarea rows="10" cols="151" name="message" id="message" style="border:5px solid #0066FF" onkeyPress="if(event.keyCode==13&&$('#otpr').attr('checked')&&$('#message').val(   )!=='') {
otpr_ajax();
}"
>


Жесть то какая :D

Спустя 1 минута, 16 секунд (1.04.2011 - 12:10) alex12060 написал(а):
Почему по нажатию на Энтер? А если я хочу написать
вот
так
?
Я же уйду от тебя))

Спустя 8 минут, 41 секунда (1.04.2011 - 12:19) l@pteff написал(а):
для этого можно снять чекбокс и всё

Спустя 4 минуты, 42 секунды (1.04.2011 - 12:23) alex12060 написал(а):
Проще так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>
Гостевая книга 1.0</title>
<meta
http-equiv="content-type" content="text/html; charset=windows-1251" />
<script
type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>

$(document).ready(function() {
$("#message").bind('keydown', function(key) {
if (key.ctrlKey && key.keyCode == 13) {
if ($("#message").val() == "") alert('Отправлять пустое сообщение нельзя!');
else
otpr_ajax();
}
}
);
});
</script>
</head>
<body>
<textarea
id="message" cols="6" style="width: 550px; height: 170px"></textarea>
<p></p>
</body>
</html>

Спустя 30 минут, 37 секунд (1.04.2011 - 12:54) Zerstoren написал(а):
Ентер бессмыслен в <input type="text"
а в текст ареа можно юзать ctrl + Enter

я у себя сделал так)

Спустя 18 минут, 6 секунд (1.04.2011 - 13:12) l@pteff написал(а):
это всё понятно, в том и сложность, что нужно учесть все условия для обоих случаев отправки.
Через кнопку:
-если поле ввода пустое, отмена отправки, иначе отправка
через ctrl-enter (так и быть):
-если флажок активен и поле ввода пустое, отмена отправки, иначе отправка

поэтому столько "выкрутасов", в коде выше мы по сути просто проверяем нажаты ли клавиши ctrl+enter, когда курсор в поле, независимо от того есть ли там текст

Спустя 33 минуты, 28 секунд (1.04.2011 - 13:46) l@pteff написал(а):
ближе всего к результату был когда в textarea в onkeyPress вместо otpr_ajax() написал полностью текст функции, после этого не выполнялись только условия для пустых полей для кнопки и энтера (отправка всё равно шла). Я так понимаю сами по себе способы отправки рабочие, нужно их правильно скомбинировать

Спустя 6 часов, 26 минут, 47 секунд (1.04.2011 - 20:12) l@pteff написал(а):
Цитата
в коде выше мы по сути просто проверяем нажаты ли клавиши ctrl+enter, когда курсор в поле, независимо от того есть ли там текст

alex12060, прошу прощения, когда это писал не видел твой отредактированный пост...
действительно, так значительно проще, было предчувствие что здесь лучше юзать bind() но по неопытности не рискнул wink.gif большое спасибо за помощь!

Спустя 5 минут, 54 секунды (1.04.2011 - 20:18) alex12060 написал(а):
Я еще раз отредактировал, так как 0 написал зря)

Вообще, слышал, что bind() медленней live(), да и вообще, можно пользоваться разными методоами - это сугубо личный выбор)

Спустя 1 день, 11 часов, 35 минут, 20 секунд (3.04.2011 - 07:54) l@pteff написал(а):
Однако не могу удержаться от вопроса: а почему по Энтеру работает криво? Т.е. такой код:
 
$("#message").bind('keydown', function(key) {
if (key.keyCode == 13 || key.keyCode == 10) {
if ($("#message").val() == "") alert('Отправлять пустое сообщение нельзя!');
else
otpr_ajax();
}
}
);


отправляет форму даже при пустом поле :( . Это в связи с какими-то особенностями textarea? И как тогда отправка по Enter реализуется в icq?

Спустя 1 час, 11 минут, 14 секунд (3.04.2011 - 09:05) SerginhoLD написал(а):
l@pteff
скорее всего при нажатии Enter в поле добавляется \r\n

Спустя 7 минут, 26 секунд (3.04.2011 - 09:12) l@pteff написал(а):
а как подправить мой код под это?

Спустя 21 минута, 40 секунд (3.04.2011 - 09:34) SerginhoLD написал(а):
$('textarea').keypress(function(event) {
if (event.which == '13') {
$('textarea').val($('textarea').val().trim('\r\n').trim(' '));
if ($('textarea').val().length == 0)
{
alert('Сообщение пусто');
}
else alert('Отправляем форму');
}
}
);

Спустя 7 минут, 49 секунд (3.04.2011 - 09:42) l@pteff написал(а):
большое спасибо, всё верно, теперь с отправкой по Enter проблем нет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.