2013-04-17 25 views
9

Tôi có đoạn mã sau:javascript ngăn chặn mặc định cho KeyUp

$(document).on('keyup', 'p[contenteditable="true"]', function(e) { 
    if(e.which == 13) { 
     e.preventDefault(); 
     $(this).after('<p contenteditable = "true"></p>'); 
     $(this).next('p').focus(); 
    } else if((e.which == 8 || e.which == 46) && $(this).text() == "") { 
     e.preventDefault(); 
     alert("Should remove element."); 
     $(this).remove(); 
     $(this).previous('p').focus(); 
    }; 
}); 

Tôi muốn ngăn chặn hành động mặc định khi một phím được nhấn. preventDefault hoạt động cho keypress nhưng không hoạt động keyup. Có cách nào để ngăn chặn defualt cho $(document).on('keyup')?

Trả lời

27

No. keyup kích hoạt sau hành động mặc định.

keydownkeypress là nơi bạn có thể ngăn chặn mặc định.
Nếu những điều đó không bị dừng, thì mặc định sẽ xảy ra và keyup sẽ được kích hoạt.

1

Chúng tôi có thể ngăn chặn hành động bằng cách sử dụng đoạn mã sau.

e.stopPropagation(); 
     e.preventDefault(); 
     e.returnValue = false; 
     e.cancelBubble = true; 
     return false; 

cháy bàn phím sau khi nhấn phím/bấm phím. chúng tôi có thể ngăn chặn hành động mặc định trong bất kỳ ai trong những sự kiện đó.

Cảm ơn,

Siva

+0

Nó không phải là câu trả lời đúng cho câu hỏi được hỏi nếu không tôi sẽ upvote nó; tuy nhiên tôi thực sự đánh giá cao những nỗ lực của bạn để cung cấp thông tin hữu ích này. –

+0

không sử dụng 'keyup', nhưng sử dụng' keydown' và thêm câu trả lời của mình –

Các vấn đề liên quan