Czy ktoś znalazł sposób na przechwycenie domyślnych formularzy Form :: postLink() za pomocą Jquery? Chciałbym formularza do pracy bez JS (dlatego postLink). Ale przy włączonym JS chcę przechwycić wpis i zadzwonić do niego przez AJAX.Przechowuj ciastko2 postLink() z postów z jQuery
<?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'])); ?>
generuje:
<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>
Głównym problemem jest to, że js jest umieszczone inline tutaj. Dlatego zawsze wyzwala nawet jeśli próbuję przechwycić zdarzenie click (lub zdarzenie Post - Próbowałem że zbyt):
<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>
Więc w końcu forma zawsze podnosi normalnie i przekierowuje - albo ignorowania wywołanie ajax (łapanie do przesłania formularza) lub wysłania/przekierowania, niezależnie od wykonanego połączenia ajaxowego (przechwytywanie zdarzenia kliknięcia).
Chciałbym usunąć ten rekord przez AJAX i - jeśli się uda - po prostu usuń ten wiersz tabeli z DOM. Byłoby wspaniale, gdyby nie trzeba było modyfikować wszystkich ponad 300 "przycisków usuwania" w aplikacji dla niego.
Jeśli wszystko zawiedzie, prawdopodobnie mógłbym nadal nadpisać FormHelper (rozszerz go i alias). Miałem jednak nadzieję na mniej inwazyjne rozwiązanie.
Usunięcie atrybutu "onclick" było tym, czego mi brakowało. Dobry, dzięki! – nIcO