侦听输入点击的事件只被调用一次

时间:2015-12-12 14:48:53

标签: javascript jquery

我试图在输入命中时动态地将文本添加到textarea。

$(document).ready(function () {

    $('#content').on("keydown", function (e) {

        if (e.keyCode == 13) {

            $('textarea').append("Hello");
        }
    })
});

这是运行的代码,它只添加一次文本(页面加载后第一次),然后没有。可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

尝试

$(document).ready(function () {
    $('textarea').on("keydown", function (e) {
        if (e.keyCode == 13) {
            this.value+= 'Hello';
        }
    })
});

该事件在textarea本身注册,新内容被添加到textarea值。

答案 1 :(得分:0)

将文字添加到textarea

如果要在文本区域的现有内容中向任何地方添加文字,可以使用此功能。只需点击你想要插入文本的地方,在你的情况下点击回车。但您可以将它用于任何您喜欢的事件(例如按钮点击)。

function insertText(inputId, text) {
    var txtarea = document.getElementById(inputId);
    var scrollPos = txtarea.scrollTop;
    var strPos = 0;
    var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
        "ff" : (document.selection ? "ie" : false));
    if(br == "ie") {
        txtarea.focus();
        var range = document.selection.createRange();
        range.moveStart('character', -txtarea.value.length);
        strPos = range.text.length;
    } else if(br == "ff") strPos = txtarea.selectionStart;

    var front = (txtarea.value).substring(0, strPos);
    var back = (txtarea.value).substring(strPos, txtarea.value.length);
    txtarea.value = front + text + back;
    strPos = strPos + text.length;
    if(br == "ie") {
        txtarea.focus();
        var range = document.selection.createRange();
        range.moveStart('character', -txtarea.value.length);
        range.moveStart('character', strPos);
        range.moveEnd('character', 0);
        range.select();
    } else if(br == "ff") {
        txtarea.selectionStart = strPos;
        txtarea.selectionEnd = strPos;
        txtarea.focus();
    }
    txtarea.scrollTop = scrollPos;
    return false;
} 

这是编辑过的小提琴:

https://jsfiddle.net/zLy2yzyd/