Tôi đang tìm cách gọn gàng nhất để tạo một biểu mẫu HTML không có nút gửi. Điều đó tự nó đã đủ dễ dàng, nhưng tôi cũng cần ngăn biểu mẫu tự tải lại khi thực hiện xong những việc giống như gửi (ví dụ: nhấn Entervào trường văn bản).
Tôi đang tìm cách gọn gàng nhất để tạo một biểu mẫu HTML không có nút gửi. Điều đó tự nó đã đủ dễ dàng, nhưng tôi cũng cần ngăn biểu mẫu tự tải lại khi thực hiện xong những việc giống như gửi (ví dụ: nhấn Entervào trường văn bản).
Câu trả lời:
Thêm trình xử lý gửi kèm vào biểu mẫu (thông qua js thuần túy hoặc jquery $ (). Submit (fn)) và trả về false trừ khi các điều kiện cụ thể của bạn được đáp ứng.
Trừ khi bạn không muốn gửi biểu mẫu - trong trường hợp đó, tại sao không bỏ thuộc tính 'action' trên phần tử biểu mẫu?
action
Theo tiêu chuẩn, biểu mẫu không có thuộc tính không phải là biểu mẫu - và thực sự sẽ gây ra tải lại trang trong một số trình duyệt .. Tôi thấy rằng biểu mẫu đó action="javascript:void(0);"
hoạt động tốt.
Bạn sẽ muốn đưa action="javascript:void(0);"
vào biểu mẫu của mình để ngăn tải lại trang và duy trì tiêu chuẩn HTML.
Chỉ cần thêm sự kiện này vào trường văn bản của bạn. Nó sẽ ngăn việc gửi khi nhấn Enter và bạn có thể tự do thêm nút gửi hoặc biểu mẫu gọi.submit () theo yêu cầu:
onKeyPress="if (event.which == 13) return false;"
Ví dụ:
<input id="txt" type="text" onKeyPress="if (event.which == 13) return false;"></input>
một ý tưởng:
<form method="POST" action="javascript:void(0);" onSubmit="CheckPassword()">
<input id="pwset" type="text" size="20" name='pwuser'><br><br>
<button type="button" onclick="CheckPassword()">Next</button>
</form>
và
<script type="text/javascript">
$("#pwset").focus();
function CheckPassword()
{
inputtxt = $("#pwset").val();
//and now your code
$("#div1").load("next.php #div2");
return false;
}
</script>
Hai cách để giải quyết:
textarea
s và có thể chọn tự động hoàn thành hoặc trình đơn thả xuống và thiết bị di động có thể là một nguồn rắc rối khác.
Phản hồi đầu tiên là giải pháp tốt nhất:
Thêm trình xử lý gửi kèm vào biểu mẫu (thông qua js thuần túy hoặc jquery $ (). Submit (fn)) và trả về false trừ khi các điều kiện cụ thể của bạn được đáp ứng.
Cụ thể hơn với jquery:
$('#your-form-id').submit(function(){return false;});
Trừ khi bạn không muốn gửi biểu mẫu - trong trường hợp đó, tại sao không bỏ thuộc tính 'action' trên phần tử biểu mẫu?
Viết tiện ích mở rộng Chrome là một ví dụ về việc bạn có thể có một biểu mẫu để người dùng nhập vào, nhưng bạn không muốn nó gửi. Nếu bạn sử dụng action = "javascript: void (0);", mã có thể sẽ hoạt động nhưng bạn sẽ gặp sự cố này khi bạn gặp lỗi khi chạy Javascript nội tuyến.
Nếu bạn bỏ qua hoàn toàn thao tác, biểu mẫu sẽ tải lại, điều này cũng không mong muốn trong một số trường hợp khi viết tiện ích mở rộng Chrome. Hoặc nếu bạn có một trang web với một số loại máy tính nhúng, nơi người dùng sẽ cung cấp một số thông tin đầu vào và nhấp vào "Tính toán" hoặc tương tự như vậy.