2010-03-13 7 views
0

백스 페이스 keydown 이벤트가 브라우저에서 처리되는 것을 막으려 고 jquery 라이브러리를 사용하므로 원래 이벤트를 가져올 필요가 있지만 일부 브라우저에서는 파이어 폭스) 원본 이벤트 인 keyCode = 0을 설정하려고하면 오류가 발생합니다.이 이벤트는 getter 만 해당 속성에 대해 존재한다는 오류를 표시합니다.jQuery를 사용하여 여러 브라우저에서 백 스페이스 중지

function blockBackspace(event) { 
    var altKey = event.originalEvent.altKey; 
    var srcElementType = event.originalEvent.srcElement; 
    if((altKey) || ((event.keyCode == 8) && (srcElementType != "text" && srcElementType != "textarea" && srcElementType != "password")) 
     || ((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82))) || (event.keyCode == 116)) 
     { 
     event.keyCode = 0; 
     event.returnValue = false; 
     event.originalEvent.keyCode = 0; 
     event.originalEvent.returnValue = false; 
     //sets process backspaceFlag to keep multiple handlers from removing text 
     processBackspace = true; 
    } 
} 

그래서 난 다음에 무엇을 정확히 모르겠지만, 모든 솔루션은 내가 수율 더 많은 문제를 찾을 수 있습니다. 이 문제를 해결할 방법이 있어야합니다. 그렇지 않으면 다른 텍스트 영역 (건물의 종류)이 작동하지 않습니다.

+0

왜 멈추시겠습니까? – Gumbo

+2

@Gumbo - 이전에는 사용자가 Ajax 새로 고침의 일부인 입력 상자에 타이핑을해서 나쁜 순간에 부딪혀 페이지를 벗어납니다. 항상 다른 방법이 있지만, 나는 이것을 몇 번 생각해 보았습니다. –

+0

입력/텍스트 상자를 사용하지 않는 사용자 지정 구성 요소로 사용자 입력을 허용하는 페이지를 개발 중입니다. 입력 내용은 명령 프롬프트와 유사하지만 사용자가 입력 작업을 할 때 백 스페이스를 사용할 수 없다면 악취가납니다. – walnutmon

답변

1

이벤트가 발생하지 않도록 할 수 없습니다. 한 가지 대안은 사용자에게 이 실제로 페이지를 종료할지 묻는 독점 이벤트 인 beforeunload을 사용하는 것입니다.

$(window).bind('beforeunload', function() { 
    return "You want to leave the best page in the universe?"; 
});​ 
+0

이것이 나를 위해 작동하지 않는다. 사용자 입력란에 입력 할 수 있도록 브라우저가 돌아 가지 않도록해야한다. 내가 게시 한 코드를 체크 아웃하면 실제로 일부 브라우저에서 작동한다. 파이어 폭스가 내가 변경하려고하는 부동산에 대한 액세스 위반을 제공하고 있습니다. – walnutmon