Problème de onSubmit sur formulaire

Petit nouveau ! | 5 Messages

03 févr. 2012, 15:30

Bonjour à tous,

J'ai un formulaire où j'effectue un contrôle de saisie sur chaque champ en javascript.
Cependant la vérification qui s'effectue dans la fonction "verif" est appelée de telle façon <form action=" ... " onsubmit= return verif() >
La fonction est bien appelée , mais malgré que la fonction me retourne false, cela continue vers ma page "action" .

Est-ce normal ? Cela ne doit pas bloquer l'envoi vers la page action ? Comment faire ?


Merci d'avance.

ViPHP
ViPHP | 2287 Messages

03 févr. 2012, 16:35

Bonjour,

Si le code est tel que tu nous le décris, il manque des guillemets autour de la valeur de l'attribut onsubmit.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 5 Messages

03 févr. 2012, 17:20

Il est tel quel.
Cependant , au départ nous avons mis des guillemets , logique, mais une erreur nous survient alors -> SyntaxError return not in function: (column 110)

Et nous avons essayé sans, la fonction est appelée quand même, mais que ce soit false ou true, il continnue.

:x

ViPHP
ViPHP | 2287 Messages

03 févr. 2012, 18:03

Il est tel quel.
Cependant , au départ nous avons mis des guillemets , logique, mais une erreur nous survient alors -> SyntaxError return not in function: (column 110)

Et nous avons essayé sans, la fonction est appelée quand même, mais que ce soit false ou true, il continnue.

:x
En tout cas les guillemets sont obligatoires dans ton cas (puisque le code javascript que tu transmets en attribut contient un espace).
<form 
<!-- ici d`autres attributs, action method etc... -->
onSubmit="return verif();" >

<!-- ici les champs du formulaire... -->

</form>
Après, si une erreur javascript se produit il faudra en trouver l'origine (probablement dans la fonction verif() ) et la régler :) Mais dans ces conditions, si verif() s'éxécute bien et renvoie bien false, alors le formulaire ne sera pas envoyé.

Comme tu sembles avoir tendance à écrire du code sale (désolé...) je te conseille aussi une petite validation HTML, qui ne fait pas de mal et peut t'orienter vers d'autres erreurs/problèmes ( http://validator.w3.org )
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 5 Messages

03 févr. 2012, 18:28

Voici notre fonction js verif , pourtant , elle retourne bien quelque chose dans tout les cas.

Code : Tout sélectionner

function verif() { if(document.getElementById("login").value == "") { alert("Veuillez entrer votre login!"); document.getElementById("login").focus(); return false; } if(document.getElementById("name").value== "") { alert("Veuillez entrer votre nom!"); document.getElementById("name").focus(); return false; } if(document.getElementById("prename").value=="") { alert("Veuillez entrer votre prenom!"); document.getElementById("prename").focus(); return false; } if(document.getElementById("telf").value=="") { alert("Veuillez entrer votre telephone fixe!"); document.getElementById("telf").focus(); return false; } if(document.getElementById("telp").value == "") { alert("Veuillez entrer votre telephone portable!"); document.getElementById("telp").focus(); return false; } if(document.getElementById("cp").value == "") { alert("Veuillez entrer votre code postal!"); document.getElementById("cp").value.focus(); return false; } if(document.getElementById("adresse").value== "") { alert("Veuillez entrer votre adresse!"); document.getElementById("adresse").focus(); return false; } if(document.getElementById("ville").value== "") { alert("Veuillez entrer votre ville!"); docdocument.getElementById("ville").focus(); return false; } if(document.getElementById("mail").value == "") { alert("Veuillez entrer votre email!"); document.getElementById("login").focus(); return false; } else if (testmail(document.getElementById("mail").value)==true) { alert("Veuillez entrer une adresse mail valide!"); document.getElementById("mail").focus(); return false; } if(document.getElementById("numserie").value== "") { alert("Veuillez entrer un numéro de série!"); document.getElementById("numserie").focus(); return false; } if(document.getElementById("adminpw").value == "") { alert("Veuillez entrer le mot de passe administrateur!"); document.getElementById("adminpw").focus(); return false; } if(document.getElementById("marque").value == "") { alert("Veuillez entrer un fabricant!"); document.getElementById("marque").focus(); return false; } if(document.getElementById("operating").value== "") { alert("Veuillez entrer un système d'exploitation !"); document.getElementById("operating").focus(); return false; } if(document.getElementById("modele").value == "") { alert("Veuillez entrer un modèle!"); document.getElementById("modele").focus(); return false; } return true; }

ViPHP
ViPHP | 2287 Messages

03 févr. 2012, 18:58

Euh, on n'en est pas encore là.

D'abord t'es-tu assuré de la présence des guillemets (exactement comme dans le bout de code que je t'ai écrit) ?

Ensuite as-tu passé ta page web au validateur, et as-tu corrigé les erreurs et avertissements qu'il te remonte ?

Une fois que tu en seras là, si ça ne marche toujours pas on va examiner ce que renvoie vraiment ta fonction verif().
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 2278 Messages

04 févr. 2012, 22:59

Quand je pense qu'il y a un attribut required!!!!
et un attribut pattern
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 5 Messages

06 févr. 2012, 11:33

Oui oui, j'ai bien mis les guillemets sur l'appel de fonction !
Et l'erreur est encore présente !

Notre page est en .php et quand on la passe en .html et que l'on check les erreurs, tout est considéré comme des erreurs !
Et pourtant un &eactue, à la place d'un "é" n'empêche pas le code de fonctionner, et il nous sort 20 erreurs pour ça ...

Sirakawa, nous venons de regarder ce que sont ces attributs, cela nous serait bien utile ! Mais notre page est en .php , faut il la passer en .html5 pour que ces attributs fonctionnent ?

Nous venons de vérifier ce que retourne la fonction verif() grâce à un alert(), et elle retourne bien false, mais elle n'empêche pas de continuer le traitement !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 févr. 2012, 13:16

Sirakawa, nous venons de regarder ce que sont ces attributs, cela nous serait bien utile ! Mais notre page est en .php , faut il la passer en .html5 pour que ces attributs fonctionnent ?
une seule réponse simple => http://www.phpdebutant.org/article118.php qui t'expliquera la différence php / html

quel est le code source html généré actuellement (celui du formulaire) ?

&eactue; c'est l'élément html pour le é, cela peux éviter les problèmes de charset.

au pif je pense que ce test n'est pas bon

[javascript]
else if (testmail(document.getElementById("mail").value)==true)
{
alert("Veuillez entrer une adresse mail valide!");
document.getElementById("mail").focus();
return false;
}
[/javascript]

ça se traduit par si l'adresse email est correcte on affiche un message d'erreur .... (sinon le fonctionnement de la fonction testmail n'est pas clair ^^).


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

06 févr. 2012, 13:34

Merci, je connais la différence entre php / html :|
Mais vu que ces nouveaux attributs ont été implanté avec le HTML5 , c'était une simple question à propos de l'extension de notre fichier !

&eacute, je sais aussi ce que c'est, il ne serait pas dans le code sinon :lol:

Et nous avons décidé de continuer malgré l'erreur, et cela fonctionne #-o

Merci à vous =D>

Irish
Invité n'ayant pas de compte PHPfrance

21 févr. 2012, 18:47

Bonjour,

Est ce que tu fais tes tests sous IE ?
HTML5 oui mais il est un peu trop tôt, il n'est pas implémenté sur tout les navigateurs et je dirai même qu'on en ai loin !
Pour l'instant je recommanderai de continuer les validations formulaire en JS.

Mammouth du PHP | 2278 Messages

21 févr. 2012, 19:18

Je pense qu'on peut très bien utiliser les attributs HTML5, même si IE qui, comme d'habitude, est à la traîne, ne les reconnaît pas.
Il suffit d'écrire des fonctions de validation adaptées, ce que font beaucoup de gens, entre autres pour les feuilles de style...

Pour en avoir le coeur net, et inspiré par une remarque de moogli sur la fonction j'ai pondu juste ça:
<html>
<script type = 'text/javascript'>
function verif()
{
	return true;
}
</script>
<form method = 'post' action = 'toto.php' onsubmit = 'return verif()'>
<input type = 'text' name = 'login' />
<input type = 'text' name = 'passe' />
<button type = 'submit' >OK</button>
</form>
</html>
qui, à part les tests de verif, me semble bien refléter la situation.
Si,on fait retourner false, à verif, elle reste bien sur la page, sinon elle cherche bien toto.php
Conséquemment, il y doit y avoir un os dans le bistek de votre verif()...
Si je ne me trompe pas, une fois que le alert de JS a été exécuté, la fonction JS ne continue pas, et je suppose qu'elle ne retourne rien, en tout cas pas FALSE.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD