Fonction et expression régulière javascript
misterclic66
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
tipi75 Messages postés 680 Date d'inscription Statut Membre Dernière intervention -
tipi75 Messages postés 680 Date d'inscription Statut Membre Dernière intervention -
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....
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:
- Fonction et expression régulière javascript
- Fonction si et - Guide
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Telecharger javascript - Télécharger - Langages
- Fonction miroir - Guide
- Microsoft expression encoder - Télécharger - Divers Utilitaires
4 réponses
Bonjour,
Votre fonction s'appelle isPrix et vous avez écrit if(!is_prix.
Il faut corriger et mettre if(!isPrix
Votre fonction s'appelle isPrix et vous avez écrit if(!is_prix.
Il faut corriger et mettre if(!isPrix
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
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
L'expression est bonne, cherche du côté de formulaire.prix.value que vaut formulaire ?
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)">
}
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)">
}