2011-09-28 36 views
1

有轻微的问题,此代码:上e.keycode == 9(标签),加上12位,防止默认行为

jQuery.fn.markCursor = function(e){ 
    $(this).focus(); 
    $(this).keyup(function(e) { 
    $cursorStart.enterText(e); 

}); 

}; 

jQuery.fn.enterText = function(e){ 

if (e.keyCode == 9){ 
    $cursor.val(""); 
    alert("hello"); 
} 

}; 

TAB键被诉诸它的默认行为在浏览器中,会.preventdefault帮助在这里?如何在jquery中添加12个空格而不占用12行代码:p

+3

“会.preventdefault帮助吗?” - 你有没有试过? – MacMac

+0

是的,我尝试过,但看起来标签有一个明确的问题,我只是想知道是否有其他人更清晰 – re1man

回答

4

e.preventDefault()会有所帮助。如果你想添加双倍空间而不需要直接输入它们,请使用Array(12).join(" ");。当然,打字双空间可能会更容易。

一些方法键入twelfe空间:

var s=[];s.length=12;s.join(" "); 
var s=Array(12).join(" "); 
var s="   "; //Shortest so far. 

正如你可以看到,使用Array(i).join(" ")开始是有用的,当i高于17.注意,这种方法可进行动态缩进功能。

编辑
关键事件快速tuturial:

  • ​​- 当按键被按下启动。该事件被触发一次,之前的任何违约事件已发生
  • keypress - 当按键被按下时,默认的事件发生之前,此事件被触发(多次)。
  • keyup - 在密钥已经发布之后触发发布(每发生一次关键事件,只发生一次)。不用说,所有的默认事件都已经发生。

​​和keypress可以用来捕获和取消关键事件。如果您想捕获并验证所有关键事件,请使用keypress。如果您已分配了多个活动(例如至windowinput),则还可以将e.stopPropagation()e.preventDefault()一起使用。第一个函数阻止事件进一步冒泡(=事件不再传递给其他事件侦听器)。第二个函数防止发生默认行为。

+0

e。然而,preventDefault()对我来说似乎不起作用,但在按下标签时,光标只能进入 – re1man

+0

编辑答案,其中包含关于重要事件的简短但完整的tuturial。 –

1

我很生病的Jquery过度使用。如果你看看preventDefault函数,它所做的只是改变window.event的返回值。

function stopTab(e){ 
    e=e||window.event; 
    if(e.keyCode==9){ 
     document.querySelector('textarea').value+='   '; 
     e.returnValue= false; 
    } 

} 

您必须通过查找光标位置来处理追加空间问题。

+0

这将如何使用,虽然...我需要在keycurs之前在markcursor中声明它以拦截它吗? – re1man

3

要捕获tab键按钮,您必须绑定到​​事件。按下标签时,不会触发keyup事件。