2015-04-02 57 views
1

我需要在輸入時添加靜態文本到textarea。jquery如何將文本附加到文本區域,同時打字

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

上面的代碼將「我的文本」添加到textarea,之後如果我繼續輸入,它將開始在「文本」字之後鍵入。我需要將光標始終保留在「我的文本」之前。

+0

你可以使用這種技術來將光標設置爲你想要的cursorpostino:http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area – 2015-04-02 08:40:22

回答

0

有一個輸入字段或一個文本,它是髒的,並不能很好的工作(刪除時尤其是...)

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>

+0

_I需要我的光標始終保持在「我的文本」之前._是否提及它? – Jai 2015-04-02 08:54:55

+0

就是這樣。嘗試一下。 – 2015-04-02 08:59:02

+0

似乎並不是我每次輸入時都能看到遊標的末尾。 – Jai 2015-04-02 09:01:16

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/

+0

它的工作原理,但我用2行CSS做了60行javascript。我的答案被降低了。 – 2015-04-02 09:12:07

+0

您有一個聰明的解決方案,但不適用於OP問題。任務是與textarea一起工作。要在表單中使用contenteditable標記,需要使用更多的javascript。 – 2015-04-02 09:25:30

+0

我同意這一點。但如果偶然,他們可以使用除textarea以外的其他東西,我提供了一個更輕的替代解決方案。如果他們不能,那麼你的答案最好=)所以+1也是。 – 2015-04-02 09:28:04