Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отправка сообщения по нажатию Enter (https://javascript.ru/forum/events/64202-otpravka-soobshheniya-po-nazhatiyu-enter.html)

Хан 26.07.2016 13:09

Отправка сообщения по нажатию Enter
 
Всем привет! Есть такая задача: нужно чтобы текст в теге textarea отправлялся по нажатию клавиши Enter или комбинацией ctrl+enter. Как такое реализовать? Вот код:
<!DOCTYPE html>
<html>
<head>
	<title>jQuery</title>
	<meta charset="utf-8" />
	<script type="text/javascript" src="jquery-3.1.0.min.js"></script>

<script type="text/javascript">
		$(document).ready(function () {
			$(document).on("click", "input[name='addbitch']", function() {
				var comment = $("textarea[name='textcommenta']").val();
				$("<p>-" + comment + "</p>").appendTo("#comments");
				document.getElementById('addbitch').value='';
			}); 
		});
		
		$(document).ready(function() {
			$("input[name='deletebitch']").bind("click", function() {
				$("#comments").empty();
			});
		});
	</script>

</head>
<body vlink="blue">
	<div id="comments"></div>
	<form name="mycomment" action="#" method="post">
		<textarea name="textcommenta" cols="40" rows="10" value="" id="addbitch"></textarea>
		<br/>
		<input type="button" name="addbitch" value="Отправить" />
		<input type="button" name="deletebitch" value="Удалить комментарии" />
        </form>
</body>
</html>

laimas 26.07.2016 14:06

<input type="submit" name="addbitch" value="Отправить" /> - отправит форму и по Enter.

$(document).ready(function() - зачем же для каждой установки обработчика прописывать?

Хан 26.07.2016 14:33

Пробовал submit, вообще перестала функция работать, а обработчик пишу, чтобы html с js не пересекались, это как бы неправильно.

warren buffet 26.07.2016 15:02

По enter только однострочные поля уходят, ибо переносить там все равно нельзя, а текстареа - только по контроль-ентер, поскольку альт-ентер традиционно задействован для мягкого переноса.

В чем проблема код клавиш заюзать? Там все эти контроли с альтами и ентерами есть.

function keycheck(e){
    if (e.ctrlKey && e.keyCode == 13) {
       send();        
    }
};

textarea.addEventListener('keyup',keycheck);

Хан 26.07.2016 15:06

Цитата:

Сообщение от warren buffet (Сообщение 423481)
По enter только однострочные поля уходят, ибо переносить там все равно нельзя, а текстареа - только по контроль-ентер, поскольку альт-ентер традиционно задействован для мягкого переноса.

В чем проблема код клавиш заюзать? Там все эти контроли с альтами и ентерами есть.

function keycheck(e){
    if (e.ctrlKey && e.keyCode == 13) {
       send();        
    }
};

textarea.addEventListener('keyup',keycheck);

Не получилось, а что за функция send()?

warren buffet 26.07.2016 15:15

Ну а где у тебя отправка мессаги на сервер?

warren buffet 26.07.2016 15:17

А, ты хочешь так форму грузить, по сабмиту, без перделок, пнл.

Тогде вместо send() напиши this.form.submit();

Dilettante_Pro 26.07.2016 15:52

<!DOCTYPE html>
<html>
<head>
	<title>jQuery</title>
	<meta charset="utf-8" />
	<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<script type="text/javascript">
		$(document).ready(function () {
			$("input[name='addbitch']").on("click",  function() {
				var comment = $("textarea[name='textcommenta']").val();
				$("<p>-" + comment + "</p>").appendTo("#comments");
				$('#addbitch').val('');
			}); 

			$("input[name='deletebitch']").bind("click", function() {
				$("#comments").empty();
			});
                        $("#addbitch").on("keyup", function(e) { 
                            if (e.ctrlKey && e.keyCode == 13) {
                               $("input[name='addbitch']").trigger( "click" );
                            }
                        });
		});
	</script>
</head>
<body vlink="blue">
	<div id="comments"></div>
	<form name="mycomment" action="#" method="post">
		<textarea name="textcommenta" cols="40" rows="10" value="" id="addbitch"></textarea>
		<br/>
		<input type="button" name="addbitch" value="Отправить" />
		<input type="button" name="deletebitch" value="Удалить комментарии" />
        </form>
</body>
</html>

warren buffet 26.07.2016 16:48

Кстати

Цитата:

<input type="button" name="deletebitch" value="Удалить комментарии" />

Специально для оленеводов предусмотрена кнопка reset.

<input type="reset" value="Удалить комментарии"/>


и ничего больше не надо. Более того, reset не стирает данные, а возвращает defaultValue на место. Если value="" то сотрет, а если было прописано value="лесной олень", то вернет лесного оленя. И напоследок, если уж не хочется рисовать reset, то вызывай одноименный метод формы после нажатия любой хтмл кнопки form.reset() и всё.

warren buffet 26.07.2016 16:58

Цитата:

$("input[name='addbitch']").trigger( "click" );
Капец блин. Если инпуты валяются просто так, в каком-нить диве или еще где, то придется кликать и стирать и заниматься хренатой тащемта, но, если инпуты в форме, то надо знать, что умеет и что может форма, а может она все, что надо, поскольку рождена задолго до DHTML'я сраного.


Часовой пояс GMT +3, время: 02:26.