1

每次在文本区域中按 Enter 键时如何添加“•”。我一直在寻找它的代码。但我似乎找不到它。或者在按下回车键后,如果我输入了一个单词,那是唯一一次它会在单词前添加“•”。请帮忙。

4

3 回答 3

3

http://jsbin.com/uPALIRU/1/

$('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 回答