每次在文本区域中按 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();
}
});
});
getCaret()
从这个 SO 答案getInputSelection()
中窃取的功能以及从这个setInputSelection()
答案中窃取的功能。
完整的(有点乱)JSFiddle here。
这具有表现得更像文本编辑器的优点。如果您的光标不在文本区域的末尾并且您按下回车键,您希望项目符号出现在您的光标处,而不仅仅是添加到文本区域的末尾。
编辑:
添加了光标位置重置。
于 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 回答