2011-09-28 72 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事件。