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

cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 11 oct. 2007 à 12:07 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 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

 
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 11 oct. 2007 à 13:09
3
Merci
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        

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_bultez
XtremDuke 631 Messages postés samedi 28 septembre 2002Date d'inscription 18 mai 2009 Dernière intervention - 11 oct. 2007 à 13:27
0
Merci
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>
Commenter la réponse de XtremDuke
cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 11 oct. 2007 à 13:35
0
Merci
    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é ;)
@++
Commenter la réponse de cs_caviar
cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 11 oct. 2007 à 13:40
0
Merci
    <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
@+
Commenter la réponse de cs_caviar
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 11 oct. 2007 à 14:12
0
Merci
>> 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        
Commenter la réponse de cs_bultez
XtremDuke 631 Messages postés samedi 28 septembre 2002Date d'inscription 18 mai 2009 Dernière intervention - 11 oct. 2007 à 15:38
0
Merci
"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.
Commenter la réponse de XtremDuke
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 5 janv. 2010 à 14:59
0
Merci
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é. -
Commenter la réponse de krimog
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 5 janv. 2010 à 15:03
0
Merci
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é. -
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.