Vider un champ text

Résolu/Fermé
rolly41 Messages postés 244 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 5 novembre 2024 - Modifié le 13 juin 2017 à 21:13
rolly41 Messages postés 244 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 5 novembre 2024 - 13 juin 2017 à 21:46
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

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2017 à 21:33
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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2017 à 21:33
Et pour rester cohérent avec le reste de ton code ...

function reinit() {
  $('#message_expediteur').val('');
}
0
rolly41 Messages postés 244 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 5 novembre 2024 1
13 juin 2017 à 21:46
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 :)
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
13 juin 2017 à 21:12
Bonjour

Comment envoies tu les données dans la bdd ?
0
rolly41 Messages postés 244 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 5 novembre 2024 1
Modifié le 13 juin 2017 à 21:22
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);
?>
0