テキストエリアで Enter キーを押すたびに "•" を追加するにはどうすればよいですか。私はそれのコードを検索しています。しかし、私はそれを見つけることができないようです。またはエンターキーを押した後、単語を入力した場合、単語の前に「•」が追加されるのはそのときだけです。助けてください。
質問する
3590 次
3 に答える
3
$('textarea').on('keydown',function(e){
var t = $(this);
switch(e.which){
case 13:
t.val(t.val()+'•');
return false;
}
});
于 2013-10-15T14:44:57.200 に答える
2
おそらく、次のようなものが必要です。
$(function() {
$('#List').keyup(function (event) {
if (event.keyCode == 13) { // If enter is pressed.
var content = this.value;
var sel = getInputSelection(this);
var caret = getCaret(this);
var bullet = "• ";
this.value = content.substring(0,caret) +
bullet +
content.substring(caret,content.length);
setInputSelection(
this,
sel.start + bullet.length,
sel.end + bullet.length
);
event.stopPropagation();
}
});
});
この SO answergetCaret()
から盗まれた機能と、this oneから盗まれた機能を使用します。getInputSelection()
setInputSelection()
完全な (やや乱雑な) JSFiddle here .
これには、テキスト エディターのように動作するという利点があります。カーソルがテキストエリアの最後にないときに Enter キーを押すと、テキストエリアの最後に追加されるだけでなく、カーソルに箇条書きが表示されます。
編集:
カーソル位置のリセットを追加。
于 2013-10-15T14:52:45.607 に答える
2
行頭にブルト (•) を付けて、箇条書きリストを作成したいようです。
var linestart = function(txt, st) {
var ls = txt.split("\n");
var i = ls.length-1;
ls[i] = st+ls[i];
return ls.join("\n");
};
$('textarea').on('keydown', function(e) {
var t = $(this);
if(e.which == 13) {
t.val(linestart(t.val(), '•') + "\n");
return false;
}
});
于 2013-10-15T14:55:18.023 に答える