2012-04-27 1 views
6

내 웹 사이트 (MVC3, C#) 및 바코드 판독기에이 문제가 있습니다. 내 양식에 내가 이런 걸 가지고바코드 판독기가있는 크롬의 열린 다운로드 방지

<ajax form....> 

<input type=text /> 

<div id=list> 
</div> 

</form> 

을 그리고 입력은 바코드 리더로 가득 자동으로 아약스와 함께, 아이디 = 목록 사업부를 채운다 양식을 제출합니다. 내 문제는 크롬과 즉, 텍스트가 제출 된 후, 즉 다운로드 윈도우가 크롬에 나타나고 즐겨 찾기 창이 나타납니다. 바코드 판독기가 텍스트에 [CR] [LF]을 삽입하고 그 창을 열어서 그럴 것이라고 생각합니다. 나는 바코드 판독기가 Ctrl + j를 잠시 삽입하고있는 것으로 생각한다. 그 이유는 그 조합이 다운로드 창을 크롬과 즐겨 찾기에 열리기 때문이며, 파이어 폭스와 함께 다운로드 창이 열리지 않는다 (또한 ctrl-j이기도하다).

내 고객에게 내 페이지가 작동하도록 바코드 판독기를 구성하고 싶지 않으므로 자바 스크립트에서 해당 문제를 해결할 수있는 해결책을 원합니다.

감사합니다.

답변

5

나는 this 링크를 찾았지만 유일한 해결책은 스캐너의 기본 문자를 변경하는 것이 었습니다.하지만 저는 여러분을 바꿀 수 있는지 확신 할 수 없지만 브라우저 관련 픽스도 찾고 있습니다. 아마 자바 스크립트. 그 일을 방지하기 위해 자바 스크립트로 문자를 처리 해보겠습니다. 내가 성공한다면, 여기로 돌아와서 당신에게 hehehehehe를 말하려합니다.

나는 이것이 문제를 해결한다고 생각합니다 ....

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74){ 
      e.preventDefault(); 
     }else{ 
      console.log(e.which); 
     } 
    }) 
}); 

께요

+0

내 바코드는 키 코드가 173 인 -''이 포함되어 있으며 단일 컬럼 모드로 화면을 분할, 당신에게 @Felipe 알메이다 – Tiger

+1

또한 복사 붙여 넣기 명령을 차단합니다 감사 내가 작은 수정 사항을 추가하고 그것은 단지 블록을 것이다 Ctrl + j var prevKey = ''; \t \t $ ("입력").를 keyDown (함수 (E) { \t \t (e.which == 74 && prevKey == '17') { \t \t CONSOLE.LOG는 ('Ctrl 키 + j는 occered 간다면) \t \t e.preventDefault(); \t \t \t \t} \t (e.which == 17) { \t \t \t prevKey = 17의 경우, \t \t한다} else {0 \t prevKey = ''; \t \t} \t \t \t}); –

0

가 내 스캐너 (인터멕 SR30)가 바코드 후 3 개 새 줄 문자를 적용하도록 설정되어 ... 당신도 그의 작품 .. 너무 캐시를 비우 확인 여부를 알 . Vim을 열고 삽입 한 다음 바코드를 스캔하여 이것을 발견했습니다. 그럼 파일을 cat'ed에 OD -ax :

0000000 3 1 2 2 1 0 9 9 9 4 8 5 2 8 nl nl 
     3133 3232 3031 3939 3439 3538 3832 0a0a 
0000020 nl 
      000a 
0000021 

내가 할 수있는 함정과 'NL 년대 : (키보드에서 Ctrl 키 + j를)

$(document).ready(function(){ 
    $("#barcode").keypress(function(e){ 
     console.log('"' + e.keyCode + '"\n'); 
     if(e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 

만 다운로드 창 오픈 이벤트 열려있는 페이지에 도달하기 전에 브라우저에 의해 위태롭게됩니다. 이 문제는 또한 Firefox 30.0을 괴롭 히고 있습니다.

1

이 코드 나

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

위해 CTRL과 J 키를 차단하고 승인 된 답의 코드를 사용할 수 있습니다. 이것은 Ctrl + J 만 차단합니다.

$("#barcode").keypress(function(event){ 
    if(event.keyCode == 74 && event.ctrlKey){ 
     event.preventDefault(); 
    } 
}); 
0

이 코드는 작동하지 않습니다. 바코드 값에 'J'문자가 있으면 올바른 결과를 얻을 수 없기 때문입니다. e.ctrlkey 컨트롤을 추가하려고 시도하지만 이번에는 바코드의 한 문자 만 검색됩니다. js를 통한 해결책은 어려울 것 같습니다. 가장 좋은 방법은 스캐너 설정을 변경하는 것입니다.

$(document).ready(function(){ 
    $("#input").keydown(function(e){ 
     if(e.which==17 || e.which==74 || e.keyCode == 13){ 
      e.preventDefault(); 
     } 
    }) 
}); 
0

이것은 저에게 효과적입니다.

<script> 
    document.addEventListener('keydown', function(event) { 
    if(event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74) 
     event.preventDefault(); 
    }); 
</script>