2012-04-27 26 views
6

Tôi gặp sự cố này với trang web của tôi (MVC3, C#) và trình đọc mã vạch. Ở dạng của tôi có một cái gì đó như thế này:Ngăn cửa sổ tải xuống mở bằng chrome với đầu đọc mã vạch

<ajax form....> 

<input type=text /> 

<div id=list> 
</div> 

</form> 

Và đầu vào được làm đầy với một đầu đọc mã vạch và sẽ tự động gửi các hình thức mà với ajax, lấp đầy div với id = danh sách. Vấn đề của tôi là với chrome và tức là, sau khi văn bản được gửi, một cửa sổ tải xuống xuất hiện trong chrome và cửa sổ yêu thích xuất hiện trong ví dụ. Tôi cho rằng đó là vì trình đọc mã vạch chèn [CR] [LF] vào văn bản và mở các cửa sổ đó. Tôi nghĩ rằng đầu đọc mã vạch đã chèn một ctrl-j trong một thời điểm vì kết hợp đó sẽ mở cửa sổ tải xuống trong chrome và các mục ưa thích, nhưng với firefox cửa sổ tải không mở (và cũng là ctrl-j).

Tôi không muốn nói với khách hàng của mình định cấu hình trình đọc mã vạch để trang của tôi hoạt động, vì vậy tôi muốn có một sollution trong javascript có thể khắc phục sự cố đó.

cảm ơn !!!

Trả lời

5

tôi tìm thấy liên kết this nhưng giải pháp duy nhất là thay đổi ký tự mặc định của máy quét ... tôi không chắc chắn tôi có thể thay đổi bản thân mặc dù vậy, như bạn, tôi cũng đang tìm kiếm bản sửa lỗi liên quan đến trình duyệt. có thể là javascript. Tôi sẽ cố gắng xử lý các ký tự với javascript để ngăn chặn điều đó xảy ra ... nếu tôi có bất kỳ thành công tôi sẽ cố gắng và nhớ quay lại đây và cho bạn biết hehehehehe

tôi nghĩ rằng điều này giải quyết được vấn đề ....

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

lemme biết liệu tác phẩm của ông cho bạn quá .. chắc chắn rằng bạn xóa bộ nhớ cache quá ...

+0

mã vạch của tôi chứa '-' mà keycode là 173 và nó chia màn hình vào chế độ cột duy nhất, Cảm ơn bạn @Felipe Almeida – Tiger

+1

Nó cũng sẽ chặn sao chép dán lệnh Tôi đã thêm sửa chữa nhỏ để nó và nó sẽ chỉ khối ctrl + j var prevKey = ''; \t \t $ ("đầu vào"). KeyDown (function (e) { \t \t if (e.which == 74 && prevKey == '17') { \t \t console.log ('Ctrl + j occered'); \t \t e.preventDefault(); \t \t} \t \t \t if (e.which == 17) { \t \t \t prevKey = 17; \t \t} else { \t \t \t prevKey = ''; \t \t} \t \t \t}); –

0

máy quét của tôi (Intermec SR30) được thiết lập để áp dụng 3 ký tự dòng mới sau khi mã vạch . Tôi tìm thấy điều này bằng cách mở Vim, chèn, sau đó quét mã vạch. Sau đó, tôi cat'ed hồ sơ cho 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 

tôi có thể bẫy 'của nl với:

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

nhưng sự kiện tải cửa sổ mở (Ctrl + j từ bàn phím) được trình duyệt lướt qua trước khi nó được chuyển đến trang mở. Vấn đề này cũng gây bệnh cho Firefox 30.0.

1

mã này làm việc cho tôi

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

Các mã trên câu trả lời đã được phê duyệt chặn CTRL và J phím. Điều này sẽ chỉ chặn CTRL + J

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

Mã bên dưới này sẽ không hoạt động. Bởi vì nếu giá trị mã vạch có ký tự 'J' trong đó, bạn sẽ không thể nhận được kết quả chính xác. Chúng tôi cố gắng thêm điều khiển e.ctrlkey nhưng lần này, chỉ một ký tự của mã vạch sẽ được truy lục. Giải pháp qua js có vẻ khó. Có lẽ tùy chọn tốt nhất là thay đổi cài đặt máy quét.

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

Điều này phù hợp với tôi.

<script> 
    document.addEventListener('keydown', function(event) { 
    if(event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74) 
     event.preventDefault(); 
    }); 
</script> 
Các vấn đề liên quan