2016-12-05 54 views
0

添加值,如果我专注于一个textarea,我按Ctrl + B就应该添加-B- -.b-通过按键时功能的jQuery

通过jQuery的!它是如何实现的?

这就是我试图

$(document).ready(function(){ 
    $("#textarea").on('focus',function(){ 
    var code = e.keyCode || e.which; 
    if(code == 17 && code == 33) { 
     $(this).val() + "-b- -.b-"; 
    } 
    }); 
}); 

回答

0

为了添加字符串 “-B- -.b-” 当您按下CTRL + B你需要:

  • 测试event.which是小写的b
  • 如果测试CTRL键按下
  • 计算当前光标位置插入有
  • 阻止默认操作的字符串

的片段:

$("#textarea").on('keydown',function(e){ 
 
    if (e.ctrlKey && String.fromCharCode(e.which).toLocaleLowerCase() == 'b') { 
 
    e.preventDefault(); 
 
    var cursorPosition = $(this).prop("selectionStart"); 
 
    this.value = this.value.substr(0, cursorPosition) + '-b- -.b-' + this.value.substr(cursorPosition); 
 
    $(this).prop("selectionStart", cursorPosition + 3); 
 
    $(this).prop("selectionEnd", cursorPosition + 3); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<textarea id="textarea"></textarea>

+0

这是一个伟大的你所做的功能。你可以补充一点:光标应该放在-b- -.b-之间,当它们出现时 – Bruce

+0

@Bruce你能检查并告诉我吗? – gaetanoM

+0

它的工作原理!谢谢 :) – Bruce

0

使用按键事件并使用键码/事件数据的属性中ctrlKey。

jQuery Keypress

$(function(){ 
 
    $("textarea").keypress(function(e){ 
 
    if(e.keyCode == 2 && e.ctrlKey) { 
 
     $(this).val($(this).val() + "-b- -.b-"); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea></textarea>