2011-11-08 32 views
88

tôi có một biểu mẫu có nút gửi biểu mẫu. Tôi cần phải làm một cái gì đó trước khi các đệ trình xảy ra. Tôi đã thử thực hiện onClick trên nút đó nhưng nó xảy ra sau khi gửi.Làm cách nào để thực hiện điều gì đó trước khi gửi?

Tôi không thể chia sẻ mã nhưng, nói chung, tôi nên làm gì trong jQuery hoặc JS để xử lý việc này?

+6

* ho * [jsFiddle Ví dụ] (http://jsfiddle.net/XVAPa/) * ho * –

+1

@Brad Christie nếu tôi chỉ có thể chấp nhận bình luận như một câu trả lời. Cảm ơn rất hữu ích. – Jimmy

+1

Tôi ghét nó khi stackover đóng một câu hỏi. Bạn có thể xử lý hành động của bạn bằng cách sử dụng các sự kiện sau đó bắn vào thời gian sau ngay trước khi nộp một mẫu đơn: 1- onmouseover 2- onmousemove 3 onmousedown 4 onfocus 5 onmouseup 6- onclick 7- onsubmit –

Trả lời

138

Nếu bạn có một hình thức như vậy:

<form id="myform"> 
... 
</form> 

Bạn có thể sử dụng mã jQuery sau đây để làm điều gì đó trước khi biểu mẫu được gửi:

$('#myform').submit(function() { 
    // DO STUFF... 
    return true; // return false to cancel form action 
}); 
+1

Tôi gặp khó khăn khi sử dụng điều này cho các vòng lặp phải được hoàn tất trước khi gửi. Bất kỳ đề xuất? – Smilyan

+0

Có mã nào để xem không? Không chắc tôi hiểu vấn đề. –

+2

Tại sao điều này được bao bọc trong một cuộc gọi chức năng trống? Không nên hàm 'submit' có thể liên kết trực tiếp với' $ ('# form') 'mà không có hàm rỗng xung quanh? EDIT: [các tài liệu cho thấy rằng các cuộc gọi chức năng xung quanh là không cần thiết] (https://api.jquery.com/submit/#submit-eventData-handler). – eykanal

4

chắc chắn rằng nút gửi không phải là của gõ "gửi", làm cho nó một nút. Sau đó, sử dụng sự kiện onclick để kích hoạt một số javascript. Ở đó bạn có thể làm bất cứ điều gì bạn muốn trước khi bạn thực sự đăng dữ liệu của bạn.

+1

Biểu mẫu có thể được gửi bằng nhiều cách, chẳng hạn như nhấn enter trong một số trường nhất định. Liên kết với một nhấp chuột vào một nút có thể không được nhấp, không phải là một ý tưởng hay. Các câu trả lời khác cho thấy cách bạn liên kết 'onsubmit' của * form *, điều này sẽ kích hoạt bất kể biểu mẫu được gửi như thế nào. – Jason

13

Giả sử bạn có một hình thức như thế này:

<form id="myForm" action="foo.php" method="post"> 
    <input type="text" value="" /> 
    <input type="submit" value="submit form" /> 

</form> 

Bạn có thể đính kèm một -event onsubmit với jQuery như thế này:

$('#myForm').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

Nếu bạn return false biểu mẫu sẽ không được nộp sau thời điểm chức năng, nếu bạn trả về true hoặc không có gì nó sẽ gửi như bình thường.

Xem jQuery documentation để biết thêm thông tin.

5

Bạn có thể sử dụng onclick để chạy một số JavaScript hoặc jQuery mã trước khi nộp mẫu đơn như thế này:

<script type="text/javascript"> 
    beforeSubmit = function(){ 
     if (1 == 1){ 
      //your before submit logic 
     }   
     $("#formid").submit();    
    } 
</script> 
<input type="button" value="Click" onclick="beforeSubmit();" /> 
+14

Nhưng điều này không hiệu quả, khi biểu mẫu có chứa ví dụ: một trường đầu vào mà người dùng đang nhấn phím trả về đang kích hoạt sự kiện gửi. Tốt hơn hết nên đính kèm trực tiếp vào sự kiện gửi để bạn có thể đảm bảo nó được gọi bất kể người dùng đã gửi nội dung gửi như thế nào. – acme

+2

Ansyori

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