2012-10-08 35 views
8

Nói rằng tôi có đoạn HTML sau:

<form> 
    ...some form fields... 
    <input type="submit" id="submitButton" value="Submit" /> 
</form> 

Và tôi có một phương pháp javascript validate để kiểm tra các trường mẫu cho các kịch bản không hợp lệ khác nhau, trở về true nếu tất cả là tốt hay false nếu có điều gì đó sai.

Có sự khác biệt thực sự trong jQuery giữa làm điều này:

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

... hoặc làm điều này:

$("#submitButton").click(function(){ 
    return validate(); 
}); 

Và có bất kỳ ưu điểm/nhược điểm giữa hai?

+2

Không áp dụng ở đây, nhưng nếu bạn có hai nộp nút, nhấn 'Enter' chỉ gây' handler click' vào nút đầu tiên của. Vì vậy, nếu bạn liên kết một trình xử lý 'click' với nút gửi thứ hai, nó sẽ không thực thi (nhưng ràng buộc với cái đầu tiên sẽ): http://jsfiddle.net/7GJyN/. – pimvdb

Trả lời

13

Gọi lại nhấp được gọi chỉ khi người dùng thực sự nhấp vào nút gửi. Nhưng có những trường hợp bạn gửi biểu mẫu tự động bằng javascript, trong trường hợp đó, lệnh gọi lại không được kích hoạt trong khi gửi lại cuộc gọi lại. Tôi khuyên bạn nên sử dụng luôn luôn gửi để xác nhận và hành động nội tại của biểu mẫu, trong khi sử dụng gọi lại nhấp chuột cho hoạt ảnh hoặc những thứ khác liên quan đến hành động nhấp vào nút.

+1

Nhập văn bản nhập văn bản cũng sẽ gửi biểu mẫu và trình xử lý nhấp chuột sẽ không bắt được. – bfavaretto

+1

@bfavaretto: Nó dành cho tôi trên Chrome. – pimvdb

+0

@pimvdb Bạn đúng, tôi nên kiểm tra trước khi nói rõ điều đó. Nhưng kỳ lạ, phải không? Tôi sẽ không mong đợi một sự kiện nhấp chuột được kích hoạt khi không có nhấp chuột. – bfavaretto

1

Lợi thế của phương pháp đầu tiên là nếu biểu mẫu của bạn được gửi bằng nhiều nút hoặc hoàn thành các hành động khác nhau, thì việc xác thực trên nút gửi có nghĩa là biểu mẫu có thể ở trạng thái không hợp lệ nếu gửi qua các phương pháp khác.

Phương pháp tốt nhất là đặt xác thực vào gửi biểu mẫu vì sau đó, bất kể biểu mẫu được gửi như thế nào (bằng cách nhấp vào nút, lập trình từ nơi khác) xác thực sẽ vẫn được kích hoạt.

2

Các sự kiện nhấp được kích hoạt trước đó, sự kiện gửi sẽ kích hoạt sau sự kiện nhấp chuột.

Gửi:

  • Có thể là quá muộn để ngăn chặn sự kiện này nếu một số dữ liệu là sai (Minior và cũ Các trình duyệt)
  • Triggers cũng về nộp lệnh

Bấm:

  • Sự kiện áp đảo, gần như mọi thứ đều được liên kết với nhấp chuột. Hiệu suất?
  • Không kích hoạt trên trình lệnh
Các vấn đề liên quan