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

この 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 に答える