@Pominus, @antho07 il faut vraiment arrêter de proposer jQuery à tout bout de champs comme "la solution miracle".
@corentin philippe à la lecture de ton code, je constate que tu essayes, mais que tu ne sais pas trop ce que tu fais (ex. Ajouter de nouveaux éléments HTML à la volée alors qu'il suffirait de les afficher / cacher via CSS ...).
Tu ne devrais pas utiliser le JS inline dans ton HTML, ce n'est pas la meilleure pratique qui soit. D'autant plus que tu envoies l'id du post en hidden, pourquoi ne pas simplement l'utiliser ?
PHP :
{{ Form::open(['name' => 'post_form_' . $post->id, 'id' => 'form_' . $post->id, 'style'=>'height: 0px;', 'method' => 'POST']) }}
{{ Form::hidden('posted', $post->posted == 1 ? 0 : 1, ['id' => 'form_posted_'.$post->id]) }}
{{ Form::hidden('id', $post->id) }}
<button type="submit"><i class="fa fa-{{ $post->posted == 1 ? 'unlock-alt' : 'lock' }}"></i></button>
{{ Form::close() }}
JS :
var forms = document.querySelectorAll('.post_form'), id;
Array.prototype.forEach.call(forms, function (form) {
form.onsubmit = function (e) {
e.preventDefault();
id = form.elements["id"].value;
submitForm(id);
return false;
}
});
Attention, dans ta fonction submitForm(), à aucun moment tu ne vérifies si l'argument id est bien défini et non null.