Подтвердить что ты не робот

Как отправить форму при вводе, когда в textarea есть фокус?

При заполнении формы textarea поведение по умолчанию при нажатии клавиши ввода означает переход к следующей строке. Как я могу изменить поведение формы, чтобы она подавала на вход пользователя, даже когда пользователь находится в текстовом поле?

Я использовал Firebug для проверки Qaru comment textarea (у которого есть это поведение), но не видел никакого JavaScript, который достиг этого. Есть ли способ изменить поведение текстового поля без использования JavaScript?

4b9b3361

Ответ 1

Вы не можете сделать это без JavaScript. Stackoverflow использует библиотеку JavaScript jQuery, которая привязывает функции к элементам HTML при загрузке страницы.

Здесь вы можете сделать это с помощью базового JavaScript:

<textarea onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }"></textarea>

Код ключа - это клавиша ввода.

Вот как вы могли бы сделать это с помощью jQuery, как это делает Stackoverflow:

<textarea class="commentarea"></textarea>

с

$(document).ready(function() {
    $('.commentarea').keydown(function(event) {
        if (event.keyCode == 13) {
            this.form.submit();
            return false;
         }
    });
});

Ответ 2

Почему вы хотите, чтобы текстовое поле отправлялось при вводе?

Вход "текст" будет отправляться по умолчанию при нажатии кнопки ввода. Это однострочный ввод.

<input type="text" value="...">

"textarea" не будет, поскольку это может быть полезно для многострочных возможностей. Отправка на ввод отнимает часть этого преимущества.

<textarea name="area"></textarea>

Вы можете добавить код JavaScript для обнаружения нажатия клавиш и автоматической отправки, но вам может быть лучше использовать текстовый ввод.

Ответ 3

<form id="myform">
    <input type="textbox" id="field"/>
    <input type="button" value="submit">
</form>

<script>
    $(function () {
        $("#field").keyup(function (event) {
            if (event.which === 13) {
                document.myform.submit();
            }
        }
    });
</script>