|
|
|
|
Bonjour,
Je voudrais savoir s'il est possible de controler la saisie d'un champ de saisie avant de l'envoyer via un formulaire ?
J'ai testé ceci mais ça ne fonctionne que lorsqu'il y a une ligne
<head>
<SCRIPT language="Javascript" type="text/javascript">
/* Fonction qui vérifie que le champ montant soit renseigné */
function verifGetPlacement() {
if(document.formPlct.montant.value == "") {
alert("Vous devez saisir un montant");
document.formPlct.montant.style.backgroundColor = "#F3C200";
return false;
}
}
//Fonction qui rétablie la couleur des champs
function couleur(obj){
obj.style.backgroundColor = "#FFFFFF";
}
</script>
</head>
<body>
$i = 1;
while ($i <= 5){
<tr>
<form method="post" name="formPlct" action="test_input_text.php" onSubmit="return verifGetPlacement();">
<td align="center"> <?php echo "valeur ".$i ?> </td>
<td align="center">
<input type="text" name="montant" size="10" maxlength="8" onKeyUp="javascript:couleur(this);"/> €
</td>
<td align="center">
<input type="submit" value="Valider" />
</td>
</form>
</tr>
$i++;
}
Merci d'avance
Configuration: Windows XP Firefox 2.0.0.14
Répondre à giheller
|
Bonsoir,
|
Bonjour,
|
Bonjour,
<script type="text/javascript" language="javascript">
function controle()
{
var msg="";
<!-- érification que le champ nom est rempli--->
if(document.formulaire.nom.value=='')
{
msg+='Entrez votre nom';
}
<!---vérification que le champ n'est pas un nombre-->
else if(!isNaN(document.formulaire.nom.value))
{
msg+='-Nom invalide';
}
if(document.formulaire.prenom.value=='')
{
msg+='-Entrez votre prénom';
}
else if(!isNaN(document.formulaire.prenom.value))
{
msg+='-Prénom invalide';
}
if(document.formulaire.birthdate.value==''){
msg+='-Complétez votre date de naissance';
}
var verifemail='';
if(document.formulaire.email.value=='')
{
msg+='-Entrez votre email';
} else if ((document.formulaire.email.value.lastIndexOf(".") < document.formulaire.email.value.indexOf("@")+2
|| document.formulaire.email.value.lastIndexOf(".") > document.formulaire.email.value.length-3
|| document.formulaire.email.value.indexOf("@") < 1 ) )
{
msg+='-Email invalide';
}
<!-- si toutes les conditions sont remplies la var msg est vide, envoit en POST vers ma page php nommée sendform.php -->
if(msg==""){
document.formulaire.method = "POST";
document.formulaire.action="sendform.php";
document.formulaire.submit();
}
<!-- sinon afficher message d'alerte avec les alertes en conséquence, \n fait un retour à la ligne--->
else{
alert(msg+'\n -Merci de vérifier votre saisie-');
}
}
</script>
Le bouton envoyer du formulaire: <input type="button" value="Envoyer" class="bt" onClick="controle()" /> |
Je ne suis pas d'accord sur le type bouton, les deux façons sont possibles
|
Bsr
|
Voilà
<html>
<head>
<title>Test contrôle de champs "dynamiques"</title>
<style>
*
{
font-size : 10pt;
font-family : Arial;
}
</style>
<script>
// Object controle d'un formulaire : doit être un INPUT dans l'exemple
function Controle(controlId, nom)
{
this.id = controlId;
this.nom = nom;
}
// Object formulaire
function Formulaire(formId, nom)
{
this.id = formId;
this.nom = nom;
this.controles = new Array();
}
// Ajoute un contrôle au formulaire
Formulaire.prototype.ajouter = function(controlId, nom)
{
this.controles[this.controles.length] = new Controle(controlId, nom);
}
// Vérifie que tous les contrôles du formulaire sont renseignés
// Retourne true si tous les contrôles sont renseignés sinon false et affiche un msg d'erreur
Formulaire.prototype.verifier = function()
{
var ok = true;
for (var i=0; i < this.controles.length; i++)
{
var elt=document.getElementById(this.controles[i].id);
// Pour le moment on ne teste que des champs de type INPUT
switch (elt.tagName)
{
case "INPUT" :
ok = elt.value != "";
break;
}
if (!ok)
{
var msg = "Erreur dans "+this.nom+"\n\n";
if (this.controles[i].nom)
{
msg += "Le champ "+this.controles[i].nom+" doit être renseigné !";
}
else
{
msg += "Le champ identifié par "+this.controles[i].id+" doit être renseigné !";
}
alert(msg);
break;
}
}
return ok;
}
// Liste de formulaires
function ListeFormulaire()
{
this.formulaires = new Array();
}
// Ajoute un formulaire à la liste
ListeFormulaire.prototype.ajouter = function(formId, nom)
{
var formulaire = new Formulaire(formId, nom);
this.formulaires[formId] = formulaire;
return formulaire;
}
// Raccourcit pour vérifier un formulaire
// On pourrait aussi utiliser directement listeFormulaires.formulaires[formId].verifier()
ListeFormulaire.prototype.verifier = function(formId)
{
return this.formulaires[formId].verifier();
}
// Objet global contenant tous les formulaires à vérifier
var listeFormulaires = new ListeFormulaire();
// Génère dynamiquement les infos pour les formulaires
<?php
for ($i=0; $i < 3; $i++)
{
printf("formulaire = listeFormulaires.ajouter(\"%s\",\"%s\");\n","form".$i,"Formulaire ".$i);
for ($j=0; $j< 4; $j++)
{
printf("formulaire.ajouter(\"%s\",\"%s\");\n","form".$i."_".$j,"Champ ".$j);
}
echo "\n";
}
?>
</script>
</head>
<body>
<?php
for ($i=0; $i < 3; $i++)
{
printf("<p>Formulaire %s</p>\n",$i);
printf("<form id=\"%s\" name=\"%s\" method=\"post\" action=\"\">\n","form".$i ,"form".$i);
for ($j=0; $j< 4; $j++)
{
printf("Champ %s <input type=\"text\" id=\"%s\" name=\"%s\" size=\"5\" value=\"\">\n",$j,"form".$i."_".$j ,"form".$i."_".$j);
}
printf("<input type=\"button\" value=\"Vérifier\" onclick=\"%s\">\n","listeFormulaires.verifier('form".$i."')");
echo "</form>";
echo "</br>";
}
?>
</body>
</html>--
PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Arrrggg pour une raison que j'ignore le forum ne respecte pas tous les caractères de mon code !
|
Bjr
<html>
<head>
<title>Réception des champs "dynamiques"</title>
<style>
*
{
font-size : 10pt;
font-family : Arial;
}
</style>
<script>
</script>
</head>
<body>
<pre>
<?php
print_r($_POST);
?>
</pre>
</body>
</html>
Modifie le script ainsi : printf("<form id=\"%s\" name=\"%s\" method=\"post\" action=\"reception.php\">\n","form".$i ,"form".$i); Si tu testes ça donne (en remplissant tous les champs du formulaire 0 par ex) Array
(
[form0_0] => a
[form0_1] => b
[form0_2] => c
[form0_3] => d
)
Pas mal mais on peut mieux faire en isolant proprement le nom du forumulaire du nom des champs Dans ce cas modifiie la page principale ainsi for ($j=0; $j< 4; $j++)
{
printf("Champ %s <input type=\"text\" id=\"%s\" name=\"%s\" size=\"5\" value=\"\">\n",$j,"form".$i."_".$j ,"form".$i."[champ".$j."]");
}
Note que j'ai seulement changé la valeur de l'attribut "name" des imputs Si tu retestes ça donne : Array
(
[form0] => Array
(
[champ0] => a
[champ1] => b
[champ2] => c
[champ3] => d
)
)
Dans la page reception.php pour accèder au champ0 par ex tu peux faire <?php
if (isset($_POST["form0"]))
{
$form = $_POST["form0"];
if (isset($form["champ0"]))
{
echo "<p>Champ0 = ".$form["champ0"]."</p>";
}
}
?>
PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
|