Javascript TAB按键捕捉不工作
嗨,我写了这个JS脚本来捕获一个TAB键的捕获。 它捕获并在“pre”标记的当前指针位置插入\tJavascript TAB按键捕捉不工作,javascript,jquery,Javascript,Jquery,嗨,我写了这个JS脚本来捕获一个TAB键的捕获。 它捕获并在“pre”标记的当前指针位置插入\t $m=jQuery.noConflict(); $m(文档).keydown(函数(事件){ var keyCode=event.which; 如果(keyCode==9){ //alert();如果存在此代码,则代码有效,但如果我删除此代码,则代码不起作用,我不希望每次用户点击选项卡时都向他发出警告 //获取插入符号位置/选择 var start=this.selectionStart; var
$m=jQuery.noConflict();
$m(文档).keydown(函数(事件){
var keyCode=event.which;
如果(keyCode==9){
//alert();如果存在此代码,则代码有效,但如果我删除此代码,则代码不起作用,我不希望每次用户点击选项卡时都向他发出警告
//获取插入符号位置/选择
var start=this.selectionStart;
var end=this.selectionEnd;
var$this=$m(this);
var value=$this.val();
//将textarea值设置为:插入符号前的文本+制表符+插入符号后的文本
$this.val(value.substring(0,开始)
+“\t”
+值。子字符串(结束));
//再次将插入符号置于正确位置(为选项卡添加一个)
this.selectionStart=this.selectionEnd=start+1;
//防止焦点丢失
event.preventDefault();
}
});
但我的问题是,当我在脚本中插入警报时,它可以完美地工作并插入\t,但当我删除警报时,它就不工作了。这里还有一个焦点事件,但按TAB键后焦点会丢失。您需要在
事件上调用preventDefault()
,而不是在此上调用事件.preventDefault();而不是这个。preventDefault()@设计它的作品!!现在是基本问题。它只在我发出警报时才起作用。你能通过编辑event.preventDefault()来更改你的问题吗;?因此,只有基本问题仍然可见。使用jQuery时,不需要event.keyCode | | event.which
。只需使用,jQuery就可以为您规范化它。@RocketHazmat是的,但即使这样做也不能解决问题。。就像我发出了警报一样,这一切都很好。。任何想法都有效!!现在是基本问题。它只有在我发出警报时才起作用。
$m = jQuery.noConflict();
$m(document).keydown(function(event) {
var keyCode = event.which;
if(keyCode == 9) {
// alert(); if this is there the code works, but if i remove this the code doesn't work, i dont want to alert user every time he hits TAB
// get caret position/selection
var start = this.selectionStart;
var end = this.selectionEnd;
var $this = $m(this);
var value = $this.val();
// set textarea value to: text before caret + tab + text after caret
$this.val(value.substring(0, start)
+ "\t"
+ value.substring(end));
// put caret at right position again (add one for the tab)
this.selectionStart = this.selectionEnd = start + 1;
// prevent the focus lose
event.preventDefault();
}
});
<div class="masterContainer" onclick="setFocusDiv();">
<div class="lined"></div>
<pre id="inputId" class="nonlined" contenteditable="true" onkeyup="setLineNu();" onfocus="setLineNu();"></pre>
</div>