我需要在输入时向textarea添加静态文本。
var text= " my text";
$("#myInput").keydown(function() {
$("#myInput").val(this.value + text);
});
以上代码添加"我的文字"到textarea,然后如果我继续输入,它会在" text"之后开始输入。字。我需要把光标留在"我的文字"。
答案 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>