簡體   English   中英

監聽輸入點擊的事件僅被調用一次

[英]Event that listens for enter click gets called only once

我正在嘗試在按下Enter鍵時將文本動態添加到textarea中。

$(document).ready(function () {

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

        if (e.keyCode == 13) {

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

這是運行的代碼,它只添加一次文本(頁面加載后第一次添加文本),然后什么也不添加。 是什么原因造成的?

嘗試

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

該事件已在textarea本身上注冊,並且新內容已添加到textarea值中。

將文本添加到textarea

如果要將文本添加到文本區域中現有內容的任何位置 ,則可以使用此功能。 只需單擊要插入文本的位置,然后按Enter鍵。 但是您可以將其用於任何您喜歡的事件(例如,單擊按鈕)。

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM