2009-12-01 5 views
0

J'ai un bouton, <input type="button" name="button"> quand je clique dessus envoyer une valeur d'un autre texte d'entrée <input type="text" name="btxt"> à un javascript qui fait une action non pertinente à cette question,Soumettre/Simuler keypress HTML

Question: Est-il possible que Je déclenche ce javascript en appuyant sur retour sur le clavier au lieu de cliquer sur le bouton.

Note: Ces entrées ne sont pas les balises forment à l'intérieur

+0

souhaitez-vous appuyer sur le retour lorsque vous tapez la valeur dans le texte d'entrée de? – TeKapa

Répondre

-1

exemple travaille pleinement ici (testé sur FF 3.5), utiliser une bibliothèque JS comme jQuery événement feu si vous avez besoin de plus de portabilité.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
<title>Onkeypress Test</title> 
<script language="javascript"> 
function keyDowns(event) { 
    if (event.keyCode == 13) { 
     // If you are using jQuery just write this: 
      // $('#testbutton').trigger('click'); 
      fireClickEvent(document.getElementById('testbutton')); 
    } 
} 
// Event firing is not portable 
function fireClickEvent(control) { 
    if (document.all) { 
     control.fireEvent("onclick"); 
    } else { 
     var clickEvent = window.document.createEvent("MouseEvent"); 
     clickEvent.initEvent("click", false, true); 
     control.dispatchEvent(clickEvent); 
    } 
} 
</script> 
</head> 
<body onkeydown="keyDowns(event);"> 
<input type="button" name="button" value="Test" id="testbutton" onclick="alert('Clicked to me, you can do whatever')" /> 
</body> 
</html> 
+0

le bouton de type d'entrée a onkeydown ????? – TeKapa

+0

Pourquoi pas? "onkeydown" est un événement et si est pris en charge par le navigateur automatiquement pris en charge par les boutons. –

+0

oui, mais vous devez vous concentrer sur le bouton, puis appuyez sur retour pour le déclencher – TeKapa

2

bien, vous pouvez le faire facilement avec la forme (ce qui ne doit pas être effectivement présentés):

<form onsubmit="return yourAction();"> 
    <input type="text" name="text" /> 
    <button type="submit" name="button">Button</button> 
</form> 

et juste return false; de yourAction()

+0

il n'a pas de balises de forme autour du texte d'entrée – TeKapa

+0

Cette réponse a été mise à la hausse parce que cela déclenchera également le bouton si le champ de texte est le contrôle actif, et c'est généralement ce que vous attendez. Cette méthode permet également d'ajouter la gestion côté serveur du clic sur le bouton, de sorte que vous pouvez prendre en charge les utilisateurs qui n'ont pas JavaScript. Je crois également que cette solution est la meilleure quand l'accessibilité du site Web. –

+0

@TeKapa: Gandalf StormCrow n'a pas dit qu'il n'était pas permis et/ou possible d'ajouter l'étiquette de formulaire. Je recommanderais cette solution à celle choisie comme réponse. –

0

vous ne avez pas besoin, vous bouton d'entrée .

Essayez cette façon:

<input type="text" name="btxt" onkeypress="submitValue(this.value)"> 

function submitValue(value) 
{ 
    var key; 

    if(event.keyCode) 
    key= event.keyCode; 
    else if(event.wich) 
    key=event.wich; 

    if(key==13) 
    callFunction(value); 
} 
+0

input type = "text"? –

+0

oui. puis lorsque vous tapez la valeur, appuyez sur retour et il appellera la fonction que vous voulez – TeKapa

0

Vous devez piéger le onkeydown des événements. Je ne sais pas où vous voulez que cet événement s'étende à - la page Web entière, ou juste une partie? Quoi qu'il en soit, en supposant que vous voulez que l'événement onkeydown arrive à tout dans une balise div, par ex.

<div id="keyTrapper" onkeydown="trapReturn(event);"> 
    <input type="text" name="myText" id="myText" /> 
    <input type="button" name="button" id="myButton" onclick="alert(&quot;Clicked!&quot;);" /> 
</div> 

La fonction javascript vous avez besoin est:

function trapReturn(event) { 
     if (event.keyCode == 13) { 
      var myButton = document.getElementById("myButton"); 
      myButton.click(); 
     } 
    }