2012-02-12 27 views
6

Tôi có một hình thức + bố trí như sau:Tại sao sự kiện gửi biểu mẫu không kích hoạt (jQuery)?

<form ...> 
    <div id="editor"> 
     [form html] 
     <input type="submit" value="Submit form" /> 
    </div> 
</form> 

Và javascript sau:

$(function() { 
    var form = $('#editor').parents('form'); 
    alert(form.length); // this alerts "1" 
    $(document).on('submit', 'form', function() { 
     alert('document form submit fired'); // this works as expected (alerts) 
    }); 
    form.on('submit', function() { 
     alert('selected form submit fired'); // this is never alerted 
    }); 
}); 

Hình thức này không được nạp thông qua ajax. Khi trang tải, hộp thoại đầu tiên cảnh báo "1". Tuy nhiên, khi gửi biểu mẫu, chỉ một cảnh báo được kích hoạt - một cảnh báo kích hoạt gửi cho tất cả các biểu mẫu trong tài liệu.

Tại sao điều này lại xảy ra?

+0

Làm việc cho tôi trong jsFiddle http://jsfiddle.net/sERhZ/ Có thể đã xảy ra sự cố với html hoặc thậm chí là thiết lập của bạn? –

+0

Trên thực tế, với các trình xử lý, một trình xử lý được áp dụng trực tiếp cho biểu mẫu nên (và không) kích hoạt trước. Đây có phải là mã hoàn chỉnh của bạn không? Có bất kỳ lỗi nào trong bảng điều khiển trình duyệt không? – tvanfosson

+0

Tôi đặt cược bạn có 'return false' trên bộ xử lý đầu tiên ngăn không cho người thứ hai bắn. Tôi có đúng không? – gdoron

Trả lời

7

It does work. Một cái gì đó khác đang xảy ra đang ngăn cảnh báo thứ hai kích hoạt.

+0

Bạn đã đúng. Có mã khác can thiệp. Tôi đã tự hỏi nó có thể là gì. Hóa ra tôi có lỗi khi ghi đè $ .validator.settings.highlight và $ .validator.settings.unhighlight. – danludwig

0

Bộ chọn biểu mẫu của bạn không chính xác.

Hãy thử và làm được điều này

$("form").on('submit', function() { 

Khá chắc chắn điều này sẽ làm việc

Trên thực tế nếu không có gì đã được nạp thông qua ajax hoặc động thông qua javascript

Bạn chỉ có thể làm

$("form").submit(function() { 

EDIT

Làm xước phần trên của tôi. Không thấy bạn đặt giá trị của biểu mẫu. Hãy xem http://jsfiddle.net/s3fvM/1/. Dường như làm việc tốt với tôi. cả hai đều bắn và cảnh báo.

+1

'form' là một biến giữ phần tử biểu mẫu được bao bọc bởi jQuery. – tvanfosson

+0

Yea tôi thấy điều đó ngay bây giờ. Tôi chỉ làm điều này trong jsfiddle và cả hai đều bị sa thải. [http://jsfiddle.net/s3fvM/](http://jsfiddle.net/s3fvM/1/) – Henesnarfel

+0

"scrathed your above" bạn có đồng ý với chỉnh sửa đó không? – gdoron

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