?

Log in

No account? Create an account

Previous Entry Share Next Entry
onsubmit jQuery override
Mac
sanmai
Если у нас есть форма с переназначенным onsubmit:
<form onsubmit="return validate();">
То, для того чтобы результат выполнения функции validate(); учитывался при отправке через скрипт, нужно переназначить её на новый лад:

$('input[type=button]').bind("click", function() {
	var $form = $(this).closest("form");
	
	if ($form[0].onsubmit) {
		// сохраняем старый onsubmit
		var prevSubmit = $form[0].onsubmit;
		// отключаем его
		$form[0].onsubmit = null;
		$form.submit(function() {
			// вызываем в контексте
			return prevSubmit.call(this);
		});
	}

	// отправляем форму
	$form.submit();
});

Если так не делать, то при $form.submit(); функция validate(); будет выполняться, но возвращаемый ею результат никакого влияния оказывать не будет. Форма будет отправляться на сервер всегда.