afficher un formulaire vierge après traitement

Bonjour.
Je veux pouvoir afficher sur une page article publique le formulaire editer_evenement de l’agenda. Il s’agit de rentrer ‹ à la volée › une série d’événements sans avoir à recharger la page entière.
Pas de souci pour afficher le formulaire, ni pour entrer le premier événement.
Mais je ne réussis pas à réinitialiser le formulaire après la première saisie.
Voici mon code d’appel :

<div class="ajax">
 #FORMULAIRE_EDITER_EVENEMENT{new,#ID_ARTICLE}
 </div>

et le rechargement via un script:

function recharger() {
 //$(".formulaire_editer_evenement form")[0].reset();  
//->testé, sans effet

 ajaxReload('formulaire_evenement');

Il faudrait sûrement que je demande à spip de recalculer le formulaire, mais je ne vois pas comment faire.
J’ai testé un #CACHE[0] qui reste sans effet.

Merci d’avoir lu!

Salut,

après avoir créé un article via un formulaire public, j’affiche ça dans un inclure « ajax » :

<div class="ajax">
#FORMULAIRE_EDITER_EVENEMENT_PUBLIC{new,#ENV{id_article},#SELF,#ENV{associer_objet}}
</div>

Comme il est ajaxé, ça ré-affiche le formulaire de création vierge après avoir créé le 1er événement.

Et j’affiche également la liste des événement liés à l’article qui vient d’être créé en cas d’erreur :

[(#SET{defaut_tri,#ARRAY{
	date_debut,#ENV{date_sens,1},
	titre,1,
	id_evenement,1,
	points,-1
}})
]<B_liste_evt>
#ANCRE_PAGINATION
<div class="liste-objets evenements">
<table class='spip liste'>
	<thead>
		<tr class='first_row'>
			<th class='date' scope='col'>[<h4 class="caption">(#GRAND_TOTAL|singulier_ou_pluriel{agenda:info_un_evenement,agenda:info_nombre_evenements})</h4>]</th>
		</tr>
	</thead>
	<tbody>
	<BOUCLE_liste_evt(EVENEMENTS){id_evenement?}{id_article?}{id_rubrique?}{id_mot?}{id_evenement_source?}{where?}{statut=prop}{recherche?}{tri #ENV{par,date_debut},#GET{defaut_tri}}{pagination #ENV{nb,15}}>
		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE)][(#ID_EVENEMENT_SOURCE|oui)repetition]">
			<td class='titre principale'><p class="date">[(#DATE_DEBUT|affdate_debut_fin{#DATE_FIN,#HORAIRE})]</p>
			#SET{id_evenement,#ID_EVENEMENT_SOURCE|?{#ID_EVENEMENT_SOURCE,#ID_EVENEMENT}}
			
			[(#BOUTON_ACTION{Supprimer cette date,
					#URL_ACTION_AUTEUR{supprimer_evenement, #GET{id_evenement};#ID_ARTICLE,#SELF},
					ajax
			})]
			</td>
		</tr>
	</BOUCLE_liste_evt>
	</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
</B_liste_evt>[
<div class="liste-objets evenements caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
]<//B_liste_evt>

Bon, c’est du code d’il y a 3 ans et pour un usage spécifique, dans à voir s’il faut adapter pour ton cas.

Bonjour, et merci de la réponse.
C’est le comportement que j’attendais, mais le formulaire réaffiché après un premier submit n’est pas vierge.
Il est rempli avec les valeurs entrées précédemment.
1- je crée un nouvel événement Evenement1 sur MonArticle.
2- Submit du formulaire :
2.1 La liste des événements est mise à jour, via ajax. ça, c’est ok.
2.2 le formulaire s’affiche avec les valeurs de Evenement1.
3-je tente de créer un second événement
3.1 au submit, message d’erreur « Il y a 2 erreurs dans votre saisie, veuillez vérifier les informations. »
3.2 je re-submit, sans rien modifier… Evenement2 est créé et enregistré…

Comprends pas le mécanisme…

Je vais essayer de soumettre le formulaire avec
#FORMULAIRE_EDITER_EVENEMENT{new,#ENV{id_article},#SELF,#ENV{associer_objet}}
à la place de
#FORMULAIRE_EDITER_EVENEMENT{new,#ID_ARTICLE}
Et je dirai ici le résultat.

Non, ça ne fonctionne pas, puisque #SELF provoque le rechargement de toute la page.
Ce que je cherche, c’est à afficher le formulaire vierge sans ce rechargement.

Sur une page edition_article_public, j’ai différents formulaires :

  • #FORMULAIRE_EDITER_ARTICLE
  • #FORMULAIRE_SUPPRIMER_ARTICLE
  • #FORMULAIRE_EDITER_EVENEMENT
  • #FORMULAIRE_JOINDRE_DOCUMENT

Le tout est affiché dans une modalbox en partie publique du site. Ainsi, l’utilisateur autorisé modifie l’article concerné sur une unique page, et le résultat est pris en compte sur le site public directement.
Tout fonctionne ok sauf le rechargement d’un formulaire vierge `#FORMULAIRE_EDITER_EVENEMENT

Par exemple, #FORMULAIRE_JOINDRE_DOCUMENT se réaffiche vierge après submit. Comment obtenir le même comportement pour l’agenda? Et toujours sans recharger la page entière…

Je continue mes investigations. Voici ce qui change dans l’environnement du formulaire :
avant création de Ev

  • Evenement1
 [id_evenement] => oui   
[titre] => MonArticle
 [je_suis_poste] => 
[erreurs] => Array  (   )

Remarque: [id_evenement] => oui
J’attendais 0 à l’appel du formulaire

  • après submit :
[id_evenement] => 0
[date_debut] => 2022-03-05 10:22:00
[date_fin] => 2022-03-05 11:22:00
[titre] => Evenement1
[je_suis_poste] => 1
[erreurs] => Array  (   )

Remarque ; [je_suis_poste] => 1
Devrait être Null puisqu’il s’agit d’un nouvel événement (id_evenement = 0)

  • Tentative de création Evenement2
[id_evenement] => 0
[date_debut] => 05/03/2022
[date_fin] => 05/03/2022
[titre] => Evenement2
[je_suis_poste] => 1
[erreurs] => Array  (  
[date_debut] => La date a été corrigée
            [date_fin] => La date a été corrigée
            [message_erreur] => Il y a 2 erreurs dans votre saisie, veuillez vérifier les informations )

Re-submit Evenement2

[id_evenement] => 0
[date_debut] => 2022-03-05 10:22:00
[date_fin] => 2022-03-05 11:22:00
[titre] => Evenement2
[je_suis_poste] => 1
[erreurs] => Array  (   )

On voit qu’il y donc 2 valeurs qui changent dans l’environnement :
je_suis_poste reste à 1 après le premier submit
les date_debut et date_fin déclenchent une erreur une fois sur 2, sauf si l’utilisateur indique une nouvelle date.

Bonjour Avez-vous réussi à utiliser votre noisette de création/édition d’un nouvel événement ?..

Je reste coincé au niveau de l’événement qui ne s’associe pas à l’article… L’id_article est bien dans l’environnement mais l’événement ne s’associe pas… J’avoue ne pas comprendre le #ENV{associer_objet} dois-je le renseigner quelque part ??..

Voici mon code pour la page article appelante…

	[(#INCLURE{fond=inclure/addevt,env,ajax,env})]

et voici le code du fichier inclure/addevt


<div class="debug">
	Article = #ENV{id_article}<br/>
	Evenement = #ENV{id_evenement}<br/>
	Objet= #ENV{associer_objet}
</div>
<div class="ajax">
	#FORMULAIRE_EDITER_EVENEMENT{new,#ENV{id_article},#SELF,#ENV{associer_objet}}
</div>

Pouvez-vous me dire si j’ai oublié quelque chose ?

Merci

Voilà, c’est résolu… En fait, le code fonctionnait bien… C’est une erreur de l’installation du plugin agenda qui causait le mauvais fonctionnement :slight_smile:

Désolé pour le bruit inutile :slight_smile: