jquery如何在键入时将文本附加到文本区域

时间:2015-04-02 08:37:33

标签: jquery

我需要在输入时向textarea添加静态文本。

var text= " my text";
$("#myInput").keydown(function() {
    $("#myInput").val(this.value + text);
});

以上代码添加"我的文字"到textarea,然后如果我继续输入,它会在" text"之后开始输入。字。我需要把光标留在"我的文字"。

2 个答案:

答案 0 :(得分:2)

您需要一个函数来获取光标位置:

Get cursor position (in characters) within a text Input field

设置光标位置的功能:

jQuery Set Cursor Position in Text Area

然后你可以做你想做的事:

var text= "my text";
var textIsSet = false;
$("#myInput").keydown(function() {
    var cpos = doGetCaretPosition(this);
    if(!textIsSet) {
        $(this).val(this.value + text);
        textIsSet = true;
    }
    setCaretToPos(this, cpos);
});

这是一个jsfiddle:http://jsfiddle.net/b69v5fvs/

答案 1 :(得分:0)

使用输入字段或textarea,它很脏并且不能很好地工作(特别是在删除时......)

var text= " my text";
$("#myInput").keyup(function() {
    $(this).val(this.value.replace(text,"") + text);
});
input{
    width : 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myInput"/>

我宁愿使用contenteditable元素,在纯CSS中使用:after

p{
    min-width : 300px;
    border: grey solid 1px;
}
p:after{
    content:" my text"
}
<p contenteditable></p>