Кто-нибудь нашел способ перехватить стандартные формы Form ::postLink ()с помощью Jquery? Я хотел бы, чтобы форма работала без JS (, поэтому пост Ссылка ). Но с включенным JS я хочу перехватить сообщение и вызвать его через AJAX.
<?php echo $this->Form->postLink('Delete', array('action'=>'delete', $prospect['Prospect']['id']), array('class'=>'postLink', 'escape'=>false), __('Sure you want to delete # %s?', $prospect['Prospect']['id'])); ?>
генерирует:
<form action="/admin/prospects/delete/4f61ce95-2b6c-4009-9b89-07e852b0caef" name="post_4f648f773923b" id="post_4f648f773923b" style="display:none;" method="post">
<input type="hidden" name="_method" value="POST"/>
</form>
<a href="#" class="postLink" onclick="if (confirm('Sure you want to delete # 4f61ce95-2b6c-4009-9b89-07e852b0caef?')) { document.post_4f648f773923b.submit(); } event.returnValue = false; return false;">
Delete
</a>
Основная проблема в том, что здесь js помещается в строку. Поэтому всегда срабатывает, даже если я пытаюсь перехватить событие щелчка (или событие публикации -тоже пробовал ):
<script>
$(document).ready(function() {
$('table.list a.postLink').click(function(e) {
e.preventDefault();
alert('Handler for.submit() called.');
// TODO: do ajax request here and return false
return false;
});
});
</script>
. Таким образом, в конце концов форма всегда отправляется нормально и перенаправляет -либо игнорируя любой вызов ajax (перехват отправки формы )или публикации/перенаправления независимо от только что сделанного ajax-вызова (перехват события клика ).
Я хотел бы удалить эту запись через AJAX и -в случае успеха -просто удалить эту строку таблицы из DOM. Было бы здорово, если бы для этого не нужно было модифицировать все 300+ «кнопок удаления» в приложении.
Если ничего не получится, я, вероятно, все же смогу переопределить FormHelper (, расширить его и дать ему псевдоним ). Но я надеялся на менее инвазивное решение здесь.