2010-02-07 28 views
17

Có cách nào để tạo biểu mẫu KHÔNG làm mới hoặc gọi bất kỳ thứ gì khi bạn nhấn phím "Enter" trên bàn phím của mình không?Biểu mẫu HTML - khi tôi nhấn vào trang làm mới trang!

Cảm ơn bạn rất nhiều !!!

tôi tìm thấy mã này để ngăn ngừa Nhập từ làm việc, nhưng nó không hoạt động trong IE :(

$(document).ready(function() { 
    $(window).keydown(function(event){ 
    if(event.keyCode == 13) { 
     event.preventDefault(); 
     return false; 
    } 
    }); 
} 

Trả lời

32

Hãy thử điều này:

$(function() { 
    $("form").submit(function() { return false; }); 
}); 
16

Vô hiệu hóa sự kiện submit không phải là một tốt Bây giờ bạn có thể không bao giờ gửi biểu mẫu bằng cách nhấn nút ở vị trí đó.

Thay móc trên keypress sự kiện:

<form onkeypress="return event.keyCode != 13"> 

hoặc trong hương vị jQuery:

$('form').keypress(function(event) { 
    return event.keyCode != 13; 
}); 

13 là keyCode của Nhập then chốt. Điều này làm việc trong tất cả các trình duyệt từ IE6 đến với tất cả các trình duyệt hiện tại. Bạn chỉ phải tính đến tài khoản. Sau đó, bạn có thể xem xét cấu trúc này thay thế:

$(':input:not(textarea)').keypress(function(event) { 
    return event.keyCode != 13; 
}); 
10

thêm onSubmit property vào thẻ của biểu mẫu.

<form onSubmit="return false;"> 
+0

giải pháp đơn giản nhất và tốt nhất, imo –

2

Bạn có thể ngăn nộp mẫu đơn bằng cách 'nhập' chìa khóa natively nếu bạn đang sử dụng AngularJS.

Theo đặc điểm kỹ thuật HTML và AngularJS, bạn cần phải kiểm tra danh sách này:

  1. Mẫu phải có NOaction=... thuộc tính (AngularJS xử lý nó tự động)
  2. Mẫu phải có NObutton với type="submit" thuộc tính

Vì vậy, nếu bạn không có thuộc tính hành động và nút gửi, thứ vi biểu mẫu của bạn không được gửi bằng cách nhấn phím enter.

Ngoài ra, qua trình duyệt keyCode là thế này:

var code = (e.keyCode ? e.keyCode : e.which); 
+0

Tôi biết điều này không phải là một câu hỏi AngularJS nhưng điều này đã làm việc một điều trị cho tôi (sử dụng AngularJS). –

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