2012-05-11 43 views
11

Tôi đang cố gắng gửi biểu mẫu được tạo bởi jquery. Biểu mẫu được thêm vào div và biến 'dữ liệu' bên dưới được tạo bằng cách sử dụng php, tôi sẽ chỉ đăng mã js quan trọng nhất.gửi biểu mẫu jquery với .on()

Tôi đã thử nhiều thứ có và không có 'on()' nhưng tôi thất bại khi nhận được hộp cảnh báo hiển thị '1' để tôi biết khối mã thực sự được thực thi..tbh Tôi không hiểu những gì tôi ' m làm sai, bất kỳ lời giải thích sẽ được đánh giá rất nhiều. Cảm ơn trước!

$(".r5").click(function(event){ 
    var data='<select name="sForum"><option value="1">bla</option></select>'; 
    $(this).parent().next('div').html('<form class="moveform">'+data+'<input type="submit" name="submit" class="movethisform" value="Move Thread" /></form>'); 
}); 
$("form.moveform").on("submit",function(event){ 
    alert(1); 
}); 
+2

Hiện tại bạn đang cố gắng để ràng buộc xử lý sự kiện cho 'form.moveform', các biểu mẫu chưa tồn tại. Sử dụng ủy quyền sự kiện hoặc liên kết trình xử lý khi biểu mẫu được thêm vào DOM. –

Trả lời

20

Bạn đang ràng buộc biểu mẫu trước khi biểu mẫu tồn tại. Ràng buộc sự kiện vào tài liệu, và vượt qua bộ chọn hình thức để .on:

$(".r5").click(function(event){ 
    var data='<select name="sForum"><option value="1">bla</option></select>'; 
    $(this).parent().next('div').html('<form class="moveform">'+data+'<input type="submit" name="submit" class="movethisform" value="Move Thread" /></form>'); 
}); 
$(document).on("submit", "form.moveform", function(event){ 
    alert(1); 
}); 
0

bạn đã thử

$("inout.movethisform").on("click",function(event){ 
    alert(1); 
    $("form.moveform").submit(); 
}); 
+0

Mã này nên đi đâu? Có gì sai khi sử dụng trình xử lý sự kiện gửi? Tại sao điều này giải quyết được vấn đề? –

+0

Mục đích của việc thay thế .live with .on là liên kết bộ chọn trong bộ chọn gốc. Đó là lý do tại sao bạn không nên mã hóa theo cách này nữa khi sử dụng .on –