11548 sujets

JavaScript, DOM et API Web HTML5

bonjour,
je souhaiterais pouvoir activer mon formulaire en appuyant sur une touche du clavier.
jai un bout de code, qui fonctionne, mais je ne sias pas pourquoi, uniquement lorsque la balise <form> n'est pas présente!
voila le code en question :


    <script language="JavaScript">
        
        function process_keypress()
        {
           if (window.event.type == "keypress" & window.event.keyCode == 118)
           {
                document.getElementById('valider').onclick();
                return !(window.event.type == "keypress" & window.event.keyCode == 118);
           }
           else if (window.event.type == "keypress" & window.event.keyCode == 97)
          {
               document.getElementById('annuler').onclick();
               return !(window.event.type == "keypress" & window.event.keyCode == 97);
          }
       }
        
        document.onkeypress = process_keypress;
        function annuler()
        {
            alert('annuler');
        }
        function valider()
        {
            alert('valider');
        } 
    </script>


et le formulaire:

<form name="form" action="index.html" method="post" />
 <input type="button" id="valider" onclick="valider();" value="valider">
 <input type="button" id="annuler" onclick="annuler();" value="annuler">
</form>


si quelqu'un saurait m'éclairer... je lui en serais tres reconnaissant!
merci
Modifié par falz (20 Oct 2006 - 12:47)
Bonjour,
As-tu essayé avec :
document.getElementById('valider').click();
et même chose pour le bouton annuler ?

Sinon plusieurs remarques de codage :
- Mettre <script type="text/javascript"> au lieu de <script language="javascript">
- Attention avec les boutons, si les deux input sont destinés à devenir des type="submit" et type="reset" (c-à-d soumettant ou annulant le formulaire), il vaut mieux placer l'appel de fonction dans l'évènement onsubmit et onreset de l'élément form.
Un grand merci pour l'astuce du onsubmit sur le formulaire ca marche comme ca (finalement j'ai laissé que l'action de valider.. j'ai supprimé au passage la fonction valider())
merci!!