2009-12-15 39 views
10

Sự cố sau:Safari: Tắt gửi biểu mẫu khi nhập?

Trên trang web của tôi, tôi có hai biểu mẫu. Một cho đăng nhập và một cho dữ liệu chính. Tôi chỉ có một nút gửi trong biểu mẫu chính. Biểu mẫu đăng nhập được gửi qua js khi gửi biểu mẫu chính.

Điều này hoạt động tốt. Nhưng trong Safari tôi có thể nhấn Enter trong khi tiêu điểm của tôi ở bên trong biểu mẫu đăng nhập. Điều này sẽ gửi biểu mẫu đăng nhập mà không có biểu mẫu chính, vì vậy tôi nhận được một lỗi (Nó chuyển hướng tôi đến một cái nhìn đơn giản của một json tôi yêu cầu gửi).

Có thể tắt thao tác "khi nhập được nhấn" không?

+0

Trong khi nghiên cứu vấn đề này, tôi tình cờ gặp thêm một chút ngữ cảnh cho việc này (lưu ý trạng thái WONTFIX RESOLVED): https://bugs.webkit.org/show_bug.cgi?id=16886 –

Trả lời

22

Nếu bạn nói bạn vẫn sử dụng JS để gửi dữ liệu dưới dạng tại sao không hủy hành vi mặc định của trình duyệt bằng <form onsubmit="return false;">. Bằng cách này không có vấn đề nếu bạn nhấn nút gửi hoặc nhấn enter vào một đầu vào nó sẽ không được gửi đi. The onsubmit = "return false" không nên can thiệp vào việc gọi phương thức submit() trên biểu mẫu từ JS.

+1

cảm ơn bạn! Bây giờ nó hoạt động! – Newbie

+1

Câu trả lời rất hay và rõ ràng. – Mattis

2

Bạn có thể thêm trình xử lý onsubmit cho biểu mẫu đăng nhập của mình. Trình xử lý này có thể giúp bạn ngăn chặn việc gửi biểu mẫu của bạn (và ví dụ di chuyển con trỏ của bạn đến trường trống tiếp theo trong các biểu mẫu);

<form onsubmit="do_some_function(); return false;" ></form> 

Để ngăn chặn biểu mẫu khỏi sự phân phối, trả về false trong trình xử lý tiện ích của bạn;

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