Empecher la validation d'un formulaire par entrée

Résolu
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 - 11 oct. 2007 à 12:07
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 5 janv. 2010 à 15:03
    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

 
A voir également:

8 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2007 à 13:09
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        
3
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
11 oct. 2007 à 13:27
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>
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
11 oct. 2007 à 13:35
    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é ;)
@++
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
11 oct. 2007 à 13:40
    <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
@+
0

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

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2007 à 14:12
>> 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        
0
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
11 oct. 2007 à 15:38
"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.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
5 janv. 2010 à 14:59
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é. -
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
5 janv. 2010 à 15:03
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é. -
0