Bạn cần kích hoạt sự kiện trên chính phần tử biểu mẫu, chứ không phải trên lựa chọn jQuery. (Trong thực tế, bạn thậm chí không được chọn các yếu tố hình thức - bên setTimeout
, this
là đối tượng toàn cầu.)
cache một tham chiếu đến các hình thức (this
) và gọi phương thức submit
của nó:
$('form').submit(function(event) {
var formId = this.id,
form = this;
mySpecialFunction(formId);
event.preventDefault();
setTimeout(function() {
form.submit();
}, 300);
});
Lưu ý rằng tôi cũng đã thay thế cuộc gọi $(this).attr('id')
không hiệu quả của bạn với this.id
. Cũng lưu ý rằng bạn phải gọi phương thức gửi của phần tử biểu mẫu DOM, không phải phương thức jQuery, để trình xử lý sự kiện jQuery không được kích hoạt, điều này sẽ gây ra một vòng lặp vô hạn (và hoàn toàn không hiệu quả).
tôi đã thử điều này, nhưng FireBug nói form.submit() không phải là một hàm. Tôi đang sử dụng jQuery 1.7.1. – Chris
@Chris Bạn đã sử dụng mã chính xác trong câu trả lời của tôi? – lonesomeday
Ya, tôi có thể làm cho nó hoạt động trong JSFiddle, nhưng không phải trên trang của tôi. Tôi đang tải jQuery động, vì vậy nó có thể liên quan đến điều đó. hrmm – Chris