我需要在輸入時添加靜態文本到textarea。jquery如何將文本附加到文本區域,同時打字
var text= " my text";
$("#myInput").keydown(function() {
$("#myInput").val(this.value + text);
});
上面的代碼將「我的文本」添加到textarea,之後如果我繼續輸入,它將開始在「文本」字之後鍵入。我需要將光標始終保留在「我的文本」之前。
我需要在輸入時添加靜態文本到textarea。jquery如何將文本附加到文本區域,同時打字
var text= " my text";
$("#myInput").keydown(function() {
$("#myInput").val(this.value + text);
});
上面的代碼將「我的文本」添加到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
元素,一個:after
純CSS:
p{
min-width : 300px;
border: grey solid 1px;
}
p:after{
content:" my text"
}
<p contenteditable></p>
你需要一個函數來獲取光標的位置:
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/
它的工作原理,但我用2行CSS做了60行javascript。我的答案被降低了。 – 2015-04-02 09:12:07
您有一個聰明的解決方案,但不適用於OP問題。任務是與textarea一起工作。要在表單中使用contenteditable標記,需要使用更多的javascript。 – 2015-04-02 09:25:30
我同意這一點。但如果偶然,他們可以使用除textarea以外的其他東西,我提供了一個更輕的替代解決方案。如果他們不能,那麼你的答案最好=)所以+1也是。 – 2015-04-02 09:28:04
你可以使用這種技術來將光標設置爲你想要的cursorpostino:http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area – 2015-04-02 08:40:22