Vider un champ text [Résolu/Fermé]

Signaler
Messages postés
232
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2019
-
Messages postés
232
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2019
-
Bonjour,

Sur le tchat de mon site, quand nous validons un message pour parler, le message s’envoie bien mais reste aussi dans l'input text. Je souhaite donc vider le champ text nommé "message" quand le message a bien été envoyé à la base de données.

J'ai testé ceci dans mon code javascript:
function reinit() 
{
document.getElementsByName("message")[0].value = "";
}


et j'ai mis ceci au bouton submit:
onclick="reinit()"


Le problème, c'est que le champ message est vidé avant d'être envoyé à la base de données, ce qui fait donc un message vide.

Pourriez-vous m'orienter vers une solution stable pour que je puisse corriger cela?


Merci beaucoup à vous tous, grâce à ce forum j'ai appris beaucoup de chose et de plus, cela me permet de partager mes erreurs pour éviter que d'autre personne ne fassent les même erreurs :)

2 réponses

Messages postés
29903
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 898
Il suffit d'appeller ta fonction à la fin du script d'envoie

Donc retire le onclick que tu as mis ....
et remplaces ton code js par :
$('#envoyer').click(function(e)
{
 e.preventDefault();
 var url="./include/ajax-shoutbox.php";
 var pseudo = $('#pseudo_expediteur').val();//pseudo de l'expediteur
 var message = $('#message_expediteur').val();//message envoyé
 var idsalon = $('#idsalon').val();//id du salon
 var id_expediteur = $('#id_expediteur').val();//id de l'expediteur
 var timer = new Date(); //création variable timer
 var annee   = timer.getFullYear();
 var mois    = timer.getMonth()+1;
 var jour    = timer.getDate();
 var hrs   = timer.getHours();
 var mins  = timer.getMinutes();
 var secs = timer.getSeconds();
 var heure = ((hrs<10)?"0":"")+hrs;
 var minute = ((mins<10)?"0":"")+mins;
 var seconde = ((secs<10)?"0":"")+secs;
 var date = jour+"/"+mois+"/"+annee;
 var time = heure+":"+minute+":"+seconde;
 if(message != "") // on vérifie que la variable n'est pas vides
 {
  $.post(url,{action:"addMessage",message:message},function(data){
  },"json");
  $('#messages').append("[" + time + "] " + pseudo + " : " + message + "<hr />");
  element = document.getElementById('defillement');
  element.scrollTop = element.scrollHeight;
  
  reinit();
  return false;
  
 }
 else
 {
  alert('Votre message est vide');
 }
 
});


function reinit() 
{
document.getElementsByName("message")[0].value = "";
}

2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
29903
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 898
Et pour rester cohérent avec le reste de ton code ...

function reinit() {
  $('#message_expediteur').val('');
}
Messages postés
232
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2019
2
J'ai bien fait les modifications proposé et cela fonctionne :) donc mon appel de la fonction se faisait simplement trop tôt --"

Effectivement, ta fonction reinit est beaucoup plus propre que la mienne pour mon code et plus facile :) il serait temps pour moi de faire une pause je crois xD

Merci beaucoup pour ton aide, une aide vraiment au top :)
Messages postés
29903
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 898
Bonjour

Comment envoies tu les données dans la bdd ?
Messages postés
232
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2019
2
La page shoutbox.php appel ce script (shoutbox.js) :
$('#envoyer').click(function(e)
{
e.preventDefault();
var url="./include/ajax-shoutbox.php";
var pseudo = $('#pseudo_expediteur').val();//pseudo de l'expediteur
var message = $('#message_expediteur').val();//message envoyé
var idsalon = $('#idsalon').val();//id du salon
var id_expediteur = $('#id_expediteur').val();//id de l'expediteur
var timer = new Date(); //création variable timer
var annee = timer.getFullYear();
var mois = timer.getMonth()+1;
var jour = timer.getDate();
var hrs = timer.getHours();
var mins = timer.getMinutes();
var secs = timer.getSeconds();
var heure = ((hrs<10)?"0":"")+hrs;
var minute = ((mins<10)?"0":"")+mins;
var seconde = ((secs<10)?"0":"")+secs;
var date = jour+"/"+mois+"/"+annee;
var time = heure+":"+minute+":"+seconde;
if(message != "") // on vérifie que la variable n'est pas vides
{
$.post(url,{action:"addMessage",message:message},function(data){
},"json");
$('#messages').append("[" + time + "] " + pseudo + " : " + message + "<hr />");
element = document.getElementById('defillement');
element.scrollTop = element.scrollHeight;
return false;
}
else
{
alert('Votre message est vide');
}

});


function reinit()
{
document.getElementsByName("message")[0].value = "";
}


Quand je clique sur "Envoyer", le scrip me dit : "Votre message est vide". Chose qu'il ne me disait pas avant la fonction reinit. Du coup, il n’envoie pas le formulaire à la page de traitement php qui elle doit enregistrer les informations dans la base de données.

Page de traitement pour enregistrer les informations dans la base de données (ajax-shoutbox.php):
<?php
session_start();
require ("connect-bdd.php");
$d=array();
if($_POST['action']=="addMessage")
{
$d["erreur"]='connecté';
extract($_POST);
$message=mysql_escape_string($message);
//Permet l'ajout d'un message
if($_POST['action']=="addMessage")
{
$d["erreur"]='formulaire trouvé';
$pseudo_expediteur=$_SESSION['pseudo_expediteur'];
$date= date("j/n/Y");
$time= date("H:i:s");
$id_expediteur=$_SESSION['id'];
$id_salon=$_SESSION['salon'];
$requete = $bdd->prepare("INSERT INTO shoutbox_msg (id_expediteur, time_msg, date_msg, msg, id_salon) VALUES (?,?,?,?,?)");
$requete->bindParam(1, $id_expediteur);
$requete->bindParam(2, $time);
$requete->bindParam(3, $date);
$requete->bindParam(4, $message);
$requete->bindParam(5, $id_salon);
$requete->execute();
if($requete)
{
$d=["erreur"]='Votre message a bien été enregistré';
}
else
{
$d["erreur"]='Impossible d\'enregistrer votre message';
}
}
else
{
$d["erreur"]='Aucun formulaire reçu';
}
}
else
{
$d["erreur"]='Merci de vous connecter avant de discuter';
}
echo json_encode($d);
?>