2012-12-24 47 views
-1

可能重複:
How to disable backspace except textbox using jQuery退格鍵需要禁用

我想禁用除非它在文本字段退格鍵。

我使用下面的代碼,但它防止退格鍵功能包括文本字段.. BACKSPACE應該僅用於TEXT場工作..

請幫了這一點...

$(document).on("keydown", processKeyEvents); 
$(document).on("keypress", processKeyEvents); 

function processKeyEvents(event) { 
    // Backspace 
    if (event.keyCode == 9) { 
     // myTextBox is id of the valid textbox 
     if ($("*:focus") != $("#myTextBox")) { 
      event.preventDefault(); 
     } 
    } 
} 

回答

2

你不能比較喜歡jQuery的對象,你只需要一個關鍵的事件,和退格是鍵9.

$(document).on('keydown', function(e) { 
    if(e.keyCode === 8 && !$('#myTextBox').is(':focus')) { 
     e.preventDefault(); 
    } 
}); 
+0

爲什麼你就不能像比較jQuery的對象的元素嗎?它工作正常。唯一的問題是鍵碼,它必須是8而不是9。 – ATOzTOA

+0

@ATOzTOA:當你嘗試它時它工作嗎?這可能是因爲某些瀏覽器優化,我認爲它不能保證運行良好。 (即使有這種古怪的特殊情況,'是'反正更好。) – Ryan

+0

它的工作:http://jsfiddle.net/GVpRb/1/。也許,你是對的,它可能不適用於所有瀏覽器。 – ATOzTOA

0

如何使用event.target得到

function processKeyEvents(event) { 
    // Backspace 
    if (event.keyCode == 8) { 
     // myTextBox is id of the valid textbox 
     if (!$(event.target).is("#myTextBox")) { 
      event.preventDefault(); 
     } 
    } 
} 
+0

感謝很多musa,其工作完美我所期望的...... –

0
$(document).keydown(function(e) { 
    var elid = $(document.activeElement).hasClass('textInput'); 
    if (e.keyCode === 8 && !elid) { 
     return false; 
    }; 
});