2009-08-04 7 views
4

Je souhaite désactiver le clavier pour une balise HTML SELECT afin que l'utilisateur puisse uniquement utiliser une souris pour sélectionner les options. J'ai essayé event.cancelBubble=true sur les événements onkeydown, onkeyup et onkeypress sans chance.Désactiver le clavier dans la balise HTML SELECT

Des idées?

+6

Je dois demander ... pourquoi voudriez-vous faire cela? Cela entrave simplement l'utilisabilité. – DisgruntledGoat

+1

événement.cancelBubble n'est pas pour empêcher l'action par défaut. C'est pour éviter le bouillonnement d'événements. – rahul

+1

Mon client l'exige comme niveau de sécurité supplémentaire sur un écran de connexion. J'ai essayé de le convaincre que c'était inutile, mais bien sûr, le client a [presque] toujours raison. –

Répondre

2

Quelqu'un m'a laissé la bonne réponse, puis retirée pour une raison quelconque, si elle est ici:

<script type="text/javascript"> 
function IgnoreAlpha(e) 
{ 
    if (!e) 
    { 
     e = window.event ; 
    } 
    if (e.keyCode >= 65 && e.keyCode <= 90) // A to Z 
    { 
     e.returnValue=false; 
     e.cancel = true; 
    } 
} 
</script> 

<body> 
    <p> 
     <select id="MySelect" name="MySelect" onkeydown="IgnoreAlpha(event);""> 
      <option selected="selected" value="" /> 
      <option value="A">A</option> 
      <option value="B">B</option> 
      <option value="C">C</option> 
     </select> 
    </p> 
</body> 
-1
event.preventDefault() 
2

D'une certaine manière multi-navigateur en supposant que l'objet de l'événement a été correctement initialisé:

function disableKey(e) 
{ 
    var ev = e ? e : window.event; 

    if(ev) 
    { 
     if(ev.preventDefault) 
      ev.preventDefault(); 
     else 
     ev.returnValue = false;   
    }  
} 
Questions connexes