Insérer un argument dans une définition de variable

Fermé
gabier1 Messages postés 84 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 6 septembre 2021 - Modifié par gabier1 le 16/09/2013 à 17:09
gabier1 Messages postés 84 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 6 septembre 2021 - 16 sept. 2013 à 19:13
Bonjour à tous,
Je me frotte à Javascript pour la première fois. J'ai pratiqué plusieurs langages, donc avec les tutos qu'on trouve sur le net, ce n'est pas trop difficile.
Mais je sèche vraiment sur un truc.
Je veux faire une fonction Javascript de contrôle des données entrées dans un formulaire HTML (<form name="form_plan">).
Pour cela, dans chaque balise <input> j'insère un appel de la fonction comme suit
<input type="text" name="champ1" onchange="checkchamp()"/>
Et dans ma fonction Javascript je récupère l'entrée et je teste si c'est un nombre (après avoir réglé le problème des virgules).
<script>
<!--
function checkchamp()
{
var val=document.form_plan.champ1.value;
val=val.replace(",",".");
if (isNaN(val)) alert('Attention, '+ val +' n\'est pas un nombre');}
-->
</script>
Jusque là, pas de problème mon code fonctionne pour contrôler champ1. Mais il y a 40 champs numériques dans mon formulaire, je voudrais donc mettre le nom du champ en paramètre d'appel de la fonction. Mais là je n'y arrive pas. Je récupère bien le nom "champ1", mais je n'arrive pas à l'insérer dans la définition de la variable.

function checkchamp(param)
{
var val=document.form_plan.param.value;
...
Ce code ne marche pas, Javascript cherche vraiment document.form_plan.param.value et non document.form_plan.champ1.value (j'ai vérifié en visualisant le code sur la page html affichée.).
Quelle est la manière élégante de résoudre ce problème?

:) Gabier
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 16/09/2013 à 17:32
Salut,

Une solution efficace et élégante est de passer en paramètre l'objet courant this sur lequel est effectué l'événement (onclick ici) :

<input type="text" name="champ1" onchange="checkchamp(this)"/>

Ce qui permet de travailler directement sur votre objet comme ceci :

function checkchamp(param)
{
var val= param.value;
...

Pour votre première solution, si vous souhaitez passer le nom du champ en paramètres, vous devez alors dans votre fonction javascript récupérer le bon objet en fonction du nom en utilisant par exemple getElementsByName().

Bon développement
0
samidu86 Messages postés 101 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 6 janvier 2018 4
16 sept. 2013 à 17:34
impek, j'aurrais pas dit mieu x)
0
gabier1 Messages postés 84 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 6 septembre 2021 1
Modifié par gabier1 le 16/09/2013 à 19:15
Bonjour Pilet,
Merci pour la solution, cette transmission de l'objet en paramètre, je ne connaissais pas encore.
Cette solution est impeccable, pas besoin de getElementByName() ...
:) gabier
0