Empecher la validation d'un formulaire par entrée [Résolu]

Signaler
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
    Saluté ...
j'ai un pb tout con ... pour changer...
par défaut dans les navigateurs la touche entrée sert à valider le formulaire ...
seulmement voila je voudrai pour moi que la touche entrée serve à lancer une opération ajax (fonction JS ... etc...)
j'ai le script suivant qui marche bien si le code de la touche n'est pas entrée... mais dès que je mets le code 13 (pour return)  ben mon formulaire est quand même valité ..j'aimerai simplement trouver l'opération à ajouter pour shunter ce comportement ;)
merci d'avance à qui aura la bonté de m'aiguiller !
@++

           
    function keyUserList(ev)        { 
            var alt      = ev.altKey;
            var shift    = ev.shiftKey;
            var ctrl     = ev.ctrlKey;
            var touche   = ev.keyCode;
           
            //alert (touche);
           
            if (touche==13) { 
                    filtreUserList(document.getElementById('filteruser').value);
                    return 0;
            }
        }

avec

 

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
>>par défaut dans les navigateurs la touche entrée sert à valider le formulaire ...
    si existe, je pense...    ne le mets pas ?


<hr />                Cordialement            Bul        
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
Il y a bien plus simple que de capturer les touches. Il suffit de jouer sur l'evenement onSubmit() de la balise Form en retournant "false".

Exemples :

<form name="monForm" onSubmit="maFonction();return false;"> ... </form>

ou

<form name="monForm" onSubmit="alert('Validation du formulaire');return false;"> ... </form>
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    yes merci à vous !!
j'avais feinté en mettant un input type button avec un événement onclick pour contourner ce pb mais je vais tester ces solutions qui permettront de garder la validation du formulaire si JS est désactivé ;)
@++
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    <form name="monForm" onSubmit="maFonction();return false;"> ... </form>
en fait ça ça ne marche pas ...
car du coup on ne peut plus soumettre le formulaire même en cliquant sur le bouton ...lol
je vais conserver la technique du input button validé par js ;)
merci
@+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>> ces solutions qui permettront de garder la validation du formulaire si JS est désactivé
    ah ben non...
    ça ne fonctionnera pas si le javascript est désactivé,
       (
dans ce cas seul fonctionne
          mais peut-être en prévoyant une solution de repli
                entre <noscript></noscript>  )


       mais comme tu nous parlais d'AJAX, donc JavaScript obligatoire ?

"le mieux", finalement, c'est-y pas de ne pas changer le comportement par défaut ?



<hr />                Cordialement            Bul        
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
"je voudrai pour moi que la touche entrée serve à lancer une opération ajax (fonction JS ... etc...)"




Si tu veux executer une fonction JS/Ajax lors de l'appuie sur la touche "Entrer" alors la solution que je t'ai fournis fonctionne.
Maitenant si en plus tu veux en plus poster ton formulaire (???) tu peux utiliser l'instruction "tonFormulaire.submit()".

Cependant, j'aimerai bien comprendre pourquoi tu veux déclancher une requete Ajax et poster ton formulaire.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Bonjour à tous.

Juste une petite indication quant à un problème que j'ai enfin réussi à solutionner.

Je suis exactement dans le même cas que caviar : j'ai un formulaire et je souhaite lancer une fonction ajax lors de l'appui sur entrée.

Mon formulaire était cependant, à chaque fois, validé quand je tapais sur entrée. Pourtant, je n'avais pas de bouton submit ni la moindre ligne de code permettant la validation du formulaire. Mais ce problème n'apparaissait que sur un page, alors que mon script Ajax était utilisé par 2 pages différentes

J'ai fini par comprendre (enfin il me semble) que lorsqu'il n'y a qu'un seul input dans un formulaire, l'appui sur entrée valide automatiquement celui-ci (sans qu'il n'y ait besoin ni de javascript ni de bouton submit).

J'ai donc utilisé une solution un peu bourrin (il y a certainement mieux) :
 un peu plus loin dans mon formulaire.



Je préfère indiquer ça parce que j'ai passé beaucoup de temps à comprendre d'où venait le problème, qui ne survenait pas si je remplaçait un (rempli par Ajax) par un (il faut avouer que ça parait bizarre - bien que logique avec l'explication ci-dessus).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Edit :
lorsqu'il n'y a qu'un seul input

=> un seul
(je n'ai pas testé avec tout, mais ça ne change rien s'il y a des radio ou des hidden en plus, dans ce formulaire)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -