[JS] créer des fonction prototype ?

Fermé
walygatou - 21 mai 2010 à 11:38
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 21 mai 2010 à 17:46
Bonjour tout le monde,

n'etant pas très douer en javascript je viens vers vous car j'aimerai créer une fonction prototype ?, je sais pas si ce mot est adéquat, je vous explique

j'ai un formulaire
<form ..>
<input type="texte" />
</form>

et j'aimerai ajouter un évenement onkeyup, je pourrait utiliser une fonction simple, mais ca alourdi grandement le code, je cherche donc à faire quelques chose qui ressemblerai à ceci
<form ...>
<input type="texte" onkeyup="this.maverif();" />
</form>

le JS
function maverif(){
  if(this.value == ""){ alert("Erreur"); }
}

c'est un exemple biensûr

ceci afin d'éviter de devoir passer à chaque fois un ID, celà est-il possible ?
d'avance merci de votre aide
A voir également:

6 réponses

hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
21 mai 2010 à 11:48
Oui c'est totalement possible et comme tu dis cela allége considérablement la page ;)

D'ailleurs, la fonction que tu donne en exemple est mauvaise ! En effet, si l'utilisateur écrit dans l'input, sa valeur ne peut pas être nulle !
De plus, évite les alerte, c'est soulant, crée plutôt au début de ton formulaire un :
<p id="msg" style="color: red; font-weight: bold;"></p>

Et à la place de tes alertes tu met :
document.getElementById('msg').innerHTML = 'Ton message en toute lettre';


Pour l'événement, met plutôt un onblur, c'est à dire lorsque l'input perds le focus (lorsque l'utilisateur est dans l'input et qu'il clic hors de ce dernier). A ce moment là, on peut supposer que l'utilisateur à fini sa saisie, et on peut donc vérifié le contenu...

Hésite pas si t'as des questions ;)

(plus d'infos sur les événements JS : http://www.commentcamarche.net/contents/javascript/jsevent.php3)

A+
0
Merci de votre réponse si rapide xD

pour ce qui est des alerte oui effectivement c'est soulant, je n'aime pas non plus, j'ai créer un DIV destiné à recueillir les différent msg d'erreur, ici c'etait vraiment pour simplifier l'explication xD

Mais je veux dire celà signifie que écrit comme comme tel celà suffit ?
JS
function maVerif(){
  if(this.value.length > 5){
      document.getElementById('divErr').innerHTML = 'erreur : trop de caractères';
  }
}


je peut donc l'utiliser directement sur le onblur de cette facon :
<input type="text" onblur="this.maVerif();" />


Je pensait qu'il fallait faire une déclaration spéciale pour que celà fonctionne, pour le onblur effectivement ca semble plus logique et plus approprié, merci du conseil xD

encore merci de votre aide
0
pour l'instant lorsque je l'utilise comme tel j'obtient l'erreur suivante
"this.maVerif is not a function"
0
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
21 mai 2010 à 12:24
Et oui voyons !

Il faut passer un paramétre à ta fonction ! this.Maverif n'existe pas !

Fais ceci :
<input type="text" onblur="maVerif(this.value);" />

Ici on passe à ta fonction la valeur de l'input ;)

Pense à la récupéré dans ta fonction comme ceci :
function maVerif(verifier){
  if(verifier.length > 5){
      document.getElementById('divErr').innerHTML = 'erreur : trop de caractères';
  }
}
0
oui comme celà ca fonctionne éffectivement, on ne peut donc pas utiliser un this.maVerif(); simplement :( c'est dommage lol ca m'aurait faciliter la tâche lol

j'ai une dernière petite question, mon formulaire est assez long et le div affichant le message d'erreur ce situe en haut du formulaire et on est donc obliger de faire défiler la page vers le haut pour voir l'erreur, est-il possible de lui donner le focus directement, donc dès qu'un message d'erreur est là hop on retourne automatiquement en haut de la page j'ai essayer avec
document.getElementById('divErr').focus();

mais celà ne donne rien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hack_net Messages postés 783 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 juin 2014 51
Modifié par hack_net le 21/05/2010 à 12:50
Le focus est réservé aux éléments "dynamic" de la page (ceux avec lesquels on peut intéragir) donc pas de .focus(); ;)

Par contre, petite astuce toute bête, tu ajoute dans l'adresse #id_de_ta_div après ta_page.php (ce qui donne ta_page.php#id_de_ta_div), et hop tadam :d

Par contre je crains que cela rafraichisse la page :s

Sinon, tu fait "flotter" ta div et tu la fait circuler en même temps que ta page (pour cela, CSS ;))


Ce n'est pas parce que un chemin prend la direction que l'on souhaite, qu'il nous amène où l'on veut.
La colère envers autrui reflète toujours la tristesse interne.
Rien n'est blanc ou noir, tout est gris clair ou gris foncé.
Le silence et la pensée sont les armes les plus puissantes.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
21 mai 2010 à 17:46
Pour faire +/- ce que tu cherches à faire, tu peux créer une fonction qui prend en argument un objet représentant le formulaire.
<form method="post" action="cible.php" onsubmit="return verifier(this);">


Et la déclaration de ta fonction :
function verifier(form) {
	alert('ok');
}
Dans ta fonction, la variable form représente donc ton formulaire.
0