Tôi có một biểu mẫu có thuộc tính onsubmit
. Tôi cần phải ràng buộc một sự kiện gửi mới và tôi cần một sự kiện này để được thực thi trước bất kỳ chức năng gửi hiện có nào.Có thể liên kết một hàm submit() trước bất kỳ trình gửi/gửi hiện có nào không?
Mã sau đây minh họa sự cố.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function($) {
// a plugin
$('form').submit(function() {
alert("Second");
});
// an other plugin
$('form').submit(function() {
alert("Third");
});
// this event must always be executed as first event
$('form').submit(function() {
alert("Always First");
});
});
</script>
</head>
<body>
<form onsubmit="javascript:alert('Fourth');">
<p>
<input type="submit">
</p>
</form>
</body>
</html>
Nếu bạn thực thi tập lệnh, trước tiên bạn sẽ nhận được "Thứ hai", sau đó "Đầu tiên".
Có thể liên kết sự kiện gửi mới và chỉ định xem hàm có được gọi trước bất kỳ sự kiện hiện có nào không?
ràng buộc:
- sự kiện hiện tại phải được bảo tồn.
- tôi không thể loại bỏ các sự kiện hiện tại bởi vì nội dung của thuộc tính
onsubmit
chứa một logic khá phức tạp được viết bởi Rails - (gia tăng): sự kiện này nên luôn luôn được thực hiện trước khi bất kỳ sự kiện onsubmit và các sự kiện đã binded (có lẽ binded bởi một plugin khác)
Bất kỳ ý tưởng nào?
Giải pháp này hoạt động rất tốt. Tôi quên đề cập đến, các plugin khác có thể đã liên kết các sự kiện khác với cùng một biểu mẫu. Có thể liên kết sự kiện này trước bất kỳ sự kiện nào được gắn vào/gắn kết không? Tôi đã cố gắng sử dụng unbind/bind (cũng đọc việc thực hiện các chức năng clone) nhưng tôi không thể có được một giải pháp hợp lý. –
Bạn có thể thử hàm die() vì nhiều plugin sử dụng live() để nắm bắt sự kiện gửi! http://api.jquery.com/live/ – xijo