Показать сообщение отдельно
  #10 (permalink)  
Старый 23.04.2018, 19:33
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

О форме с единственным textarea

В многострочном textarea использование в качестве сигнала отправки формы копки Enter⏎ не позволяет использовать этот самый многострочный ввод... Обычно для этой цели на настольном компьютере с клавиатурой или ноутбуке используют Cmd+Enter, но тогда пользователи сенсорных устройств не смогут отправить такую форму.

Т. е. *дополнительная* кнопка для отправки нужна, поскольку тогда пользователи знают, какое они совершат действие с введённым текстом. (По крайней мере у них не сложится впечатление, что достаточно ввести текст...)

Также пользователи, которые привыкли к удобному заполнению форм, введя текст, смогут нажать Tab⭾ и сфокусировавшись на кнопке, нажать на Enter⏎

Пользователи сенсорных устройств всё-таки смогут отправить форму, нажав на кнопку.

Ну и пример. Форма с единственным textarea.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Пример формы с многострочным вводом</title>
	<meta name="viewport" content="width=device-width">
	<style>
		button, form, textarea {
			color: deepskyblue;
			border: 1px solid;
			background: transparent;
			border-radius: 1em;
			padding: 0;
			font: inherit;
			display: inline-block;
			box-sizing: border-box;
			padding: .5em 1em;
			outline: 0;
		}
		
		button:focus, form:focus, textarea:focus {
			box-shadow: 0 0 0 .1em, 0 0 1em;
		}
		
		form {
			position: relative;
			min-width: 100%;
			padding: 0;
		}
		
		button {
			position: absolute;
			bottom: .5em; right: .5em;
		}
		
		textarea {
			width: 100%; height: 100%;
			display: block;
			border: none;
			min-height: 8em;
			resize: vertical;
		}
	</style>
</head>
<body>
	<form onsubmit="submitHandler(this); return false;">
		<textarea
			onkeydown="submitForm(this.form);"
			title="Нажмите ⌘⏎ или ⌃⏎ чтобы отправить"
			placeholder="Введите Ваш комментарии..."			
		></textarea>
		<button>Отправить</button>
	</form>
	<script>
	
		function submitForm(form) {
			if(
				(event.ctrlKey || event.metaKey) &&
				event.keyCode === 13
			) {
				submitHandler(form);
			}
		}
		
		function submitHandler(form) {
			// действие, которое совершается при отправке формы
			alert(form.elements[0].value);
		}
		
	</script>
</body>
</html>


Выводы:
1. ⏎ для перевода строки, ⌘⏎ или ⌃⏎ чтобы отправить
2. кнопка нужна: ⭾⏎ чтобы отправить; явно нажать
Ответить с цитированием