Fonction et expression régulière javascript

Fermé
misterclic66 Messages postés 12 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 22 avril 2011 - 27 avril 2009 à 15:45
tipi75 Messages postés 680 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 16 avril 2015 - 28 mai 2009 à 12:24
Bonjour,
Je tente de créer une fonction javascript pour vérifier que l'utilisateur rentre bien un prix dans le champ prix.

Le prix n'est pas un champ obligatoire du formulaire mais impose les contraintes suivantes : l'utilisateur doit pouvoir saisir ce prix soit sous forme d'un nombre entier ou à 2 décimales (et 2 seulement), en utilisant indifféremment la virgule ou le point comme séparateur décimal, et ajouter éventuellement derrière ce prix (mais pas devant) le symbole € séparé ou non du prix par un espace.

J'ai créé la fonction suivante

function isPrix(num){
var exp = new RegExp("^[0-9]*(,[0-9]{2}|\.[0-9]{2})?( €|€)?$","g");
return exp.test(num);
}

et plus loin un test sur le champ prix

if(formulaire.prix.value != "") /* prix */
if(!is_prix(formulaire.prix.value)) /* prix_format */
window.open('ouvragesformerror.php?formerror=prix_format', 'Erreur', 'toolbar=no, location=no, directories=no, status=no, scrollbars=no, resizable=no, menubar=no, copyhistory=no, width=480, height=120');

Mais j'obtiens un "erreur sur la page : objet attendu" au niveau de if(!is_prix....
A voir également:

4 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
27 avril 2009 à 16:29
Bonjour,

Votre fonction s'appelle isPrix et vous avez écrit if(!is_prix.
Il faut corriger et mettre if(!isPrix
0
misterclic66 Messages postés 12 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 22 avril 2011
28 avril 2009 à 08:03
Merci pour cette correction, mais mon truc ne marche toujours pas.

Je me pose vraiment des questions sur l'expression régulière de la string prix :

RegExp("^[0-9]*(,[0-9]{2}|\.[0-9]{2})?( €|€)?$","g")

contraintes : 0 ou 2 décimales obligatoirement (mais pas une seule ou + de 2), séparateur décimal point ou virgule (les français n'ont pas l'habitude d'utiliser le point) et éventuellement le symbole € en fin de chaîne (mais pas au début), espace toléré avant celui-ci
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
28 avril 2009 à 08:54
si c'est 0 ou 2 décimal obligatoires ce n'est pas {2} qui veut dire au moins 2 chiffres, je pense qu'il faut remplacer par {0,2} mais il pourra alors y avoir aussi 1 décimale seulement si vous ne spécifié pas d'échelle, vous pourrez avoir plus de deux caractères
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
28 avril 2009 à 09:38
L'expression est bonne, cherche du côté de formulaire.prix.value que vaut formulaire ?
0
misterclic66 Messages postés 12 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 22 avril 2011
28 avril 2009 à 09:50
il s'agit d'une fonction verifie_le_formulaire qui vérifie le formulaire afin qu'on n'y saisisse pas des trucs aberrants :

function verifie_le_formulaire(formulaire)
{
if(formulaire.titre.value.length==0) /* titre */
window.open('ouvragesformerror.php?formerror=titre', 'Erreur', 'toolbar=no, location=no, directories=no, status=no, scrollbars=no, resizable=no, menubar=no, copyhistory=no, width=480, height=120');

(ça ça marche....)
et plus loin

else if(formulaire.prix.value.length==0) /* prix */
if(!isPrix(formulaire.prix.value)) /* prix_format */
window.open('ouvragesformerror.php?formerror=prix_format', 'Erreur', 'toolbar=no, location=no, directories=no, status=no, scrollbars=no, resizable=no, menubar=no, copyhistory=no, width=480, height=120');

et la suite.... sur tous les champs obligatoires ou à contraintes (numéro ISBN d'un livre, nombre de pages -nombre entier-)

puis

else
formulaire.submit(); /* aucun champ vide on soumet le formulaire */

et dans le formulaire HTML

<input type="button" value="Enregistrer dans la base" class="bouton" style="font-weight: bold; background-color: white; width: 240px;" onClick="verifie_le_formulaire(this.form)">
}
0
tipi75 Messages postés 680 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 16 avril 2015 27
28 mai 2009 à 12:24
bonjour,

Je souhaiterai controler un champ se nommant prix. Cepedant, je ne sais pas utiliser les expressions régulières. Mon prix je voudrais qu'il est le format suivant:

XXX.XX ou XX.XX


Merci pour votre aide.
0

Discussions similaires