如何在textarea中只更改一行?

时间:2014-03-31 18:28:30

标签: javascript jquery html

我有一个textarea,每次用户输入“enter”时,我想用一个值填充当前行。

我想轻推用户使用某个短语开始每一行,例如“我是”。

HTML:

  <textarea class="texty"></textarea>

CSS:

.texty {
    width: 400px;
    height: 300px;
}

jQuery的:

$(document).ready(function() {
    $(".texty").bind("keydown", function(e) {
        if (e.which == 13) {
            // User entered a newline.
            // Start the line with the phrase "I am"
            console.log("enterrrrr");
        }
    });
});

JSFIDDLE

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

.keyup():键盘上释放键时触发了事件 .keydown():在键盘上按下某个键时触发事件。

当你试图用&#34开始换行时,我就是&#34;你应该使用.keyup(),这会在释放钥匙时触发。

如果要在textarea值的末尾添加文本I am。 试试这个:

$(document).ready(function() {
    $(".texty").bind("keyup", function(e) {
        if (e.which == 13) {
            $(this).val($(this).val()+"I am ");
        }
    });
});

<强> DEMO

如果你想添加`我在任何地方当用户按回车键。试试这个:

$(document).ready(function() {
    $(".texty").bind("keyup", function(e) {
        if (e.which == 13) {
            var caretPos = $('.texty')[0].selectionStart;
            var textAreaTxt = $(this).val();
            var txtToAdd = "I am ";
            $(this).val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
        }
    });
});

<强> DEMO

答案 1 :(得分:2)

你快到了。您只需将文本附加到元素即可。

您可以使用.val()

执行此操作
$('.texty').val($('.texty').val() + '\nI am');
e.preventDefault(); // We already appended a new line before "I am", so prevent default enter action

See your updated fiddle here

答案 2 :(得分:-1)

使用keypress事件代替keydown

$('.texty').bind('keypress', function(e) {
    if ((e.keyCode || e.which) == 13) {

Demo