在e.keycode == 9(tab)上,添加12个空格,并防止默认行为

时间:2011-09-28 17:44:15

标签: jquery

此代码存在轻微问题:

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有帮助吗?我如何添加12个空格而代码在jquery中占用12行:p

3 个答案:

答案 0 :(得分:4)

e.preventDefault()会有所帮助。如果您想要添加twelfe空格而不是字面输入,请使用Array(12).join(" ");。当然,输入twelfe空格可能更容易。

键入twelfe空格的一些方法:

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

正如您所看到的,当Array(i).join(" ")高于17时,使用i开始有用。请注意,此方法启用了动态缩进功能。

修改
关键事件的快速tuturial:

  • keydown - 按下按下键时启动。在发生任何默认事件之前,此事件将被触发
  • keypress - 在默认事件发生之前按下该键时,会触发此事件(多次)。
  • keyup - 在释放键后触发(每次关键事件只发生一次)。毋庸置疑,所有默认事件都已发生。

keydownkeypress可用于捕获和取消关键事件。如果要捕获并验证所有关键事件,请使用keypress。如果您已分配了多个事件(例如,分配到windowinput),您也可以将e.stopPropagation()e.preventDefault()结合使用。第一个函数阻止事件进一步冒泡(=事件不再传递给其他事件侦听器)。第二个函数可以防止出现默认行为。

答案 1 :(得分:3)

要捕获tab键,您必须绑定到keydown事件。按Tab键时,不会触发keyup事件。

答案 2 :(得分:1)

我对Jquery的过度使用感到厌烦。如果查看preventDefault函数,它所做的就是更改window.event的返回值。

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

}

你必须通过找到光标的位置来解决附加空间问题。