Rechercher : dans
Par :

Fonction et expression régulière javascript

Dernière réponse le 28 mai 2009 à 12:24:03 misterclic66, le 27 avr 2009 à 15:45:18 
 Signaler ce message aux modérateurs

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....

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Fonction et expression régulière javascript » dans :
[RegExp] Récupérer une adresse IP VoirFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...

1

NookZ, le 27 avr 2009 à 16:29:37

Bonjour,

Votre fonction s'appelle isPrix et vous avez écrit if(!is_prix.
Il faut corriger et mettre if(!isPrix

Répondre à NookZ

2

misterclic66, le 28 avr 2009 à 08:03:20

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

Répondre à misterclic66

3

NookZ, le 28 avr 2009 à 08:54:26

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

Répondre à NookZ

4

P@t@ch0n, le 28 avr 2009 à 09:38:30

L'expression est bonne, cherche du côté de formulaire.prix.value que vaut formulaire ?

Répondre à P@t@ch0n

5

misterclic66, le 28 avr 2009 à 09:50:44

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)">
}

Répondre à misterclic66

6

 tipi75, le 28 mai 2009 à 12:24:03

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.

Répondre à tipi75