如何在每次按下textarea中的输入键时添加“•”

时间:2013-10-15 14:36:26

标签: javascript jquery

每次在textarea中按Enter键时,如何添加“•”。我一直在寻找它的代码。但我似乎无法找到它。或者在按下回车键后,如果我输入了一个单词,那么这是唯一一次在单词之前添加“•”。请帮助。

3 个答案:

答案 0 :(得分: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;
  }  
});

答案 1 :(得分: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()功能从this SO answer被盗,getInputSelection()setInputSelection()功能从this one被盗。

完全(有点凌乱)JSFiddle here

这样做的好处就是更像文本编辑器。如果您的光标不在textarea的末尾并按Enter键,您希望子弹出现在光标处,而不仅仅是添加到textarea的末尾。

修改

添加光标位置重置。

答案 2 :(得分:1)

听起来你想制作一个项目符号列表,用线条作为前缀(•)

  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;
    }  
  });