2010-09-21 6 views
0

Je suis confronté à un problème avec ce code jQuery simple.Problème avec le bouton jQuery

Je joins la structure HTML ainsi,

Le code est mise en focus sur le champ d'entrée bien si je fais un clic n'importe où sur la div id « défilement volet », mais si je clique nulle part ailleurs dans l'écran, par exemple, le code au-dessus de l'id div "volet de défilement", il n'apporte pas le focus. qu'est-ce que je fais mal ici?

<script language="javascript"> 
$(function() 
{ 
    $('.scroll-pane').jScrollPane(); 
    $('#outerBody').keydown(function() { 
     $('#serialCode').focus();  
    }); 
}); 
</script> 

<center id="outerbody"> 
<table id="tab1" class="Tab1" width="100%"> 
<tr> 
    <td width="60"></td> 
    <td width="113"><p align="center">C</td> 
    <td width="105">&nbsp;</td> 
</tr> 
</table> 

<table id="tab2" class="Tab2" border="0" width="100%"> 
<tr> 
    <td>&nbsp;</td> 
    <td>A </td> 
    <td>B </td> 
    <td><input type="text" id="serialCode" class="serialCode" /></td> 
</tr> 
</table> 

<div id="scroll-pane" class="scroll-pane"> 

</div> 

+1

Essayez de ne pas utiliser ''

balises et similaires. –

+0

manquant ''? – sje397

Répondre

0

Pourquoi ne pas joindre l'événement KeyDown à toute la fenêtre du document?

$(document).keydown(function() { 
    $("#serialCode").focus(); 
});​ 

Ceci pourrait fonctionner ou vous aider à le comprendre.

Vue: http://jsbin.com/iwuwa4
modifier: http://jsbin.com/iwuwa4/edit

+0

Salut Sandro, a parfaitement fonctionné, merci :) – t0mcat

0

Essayez $('#serialCode')[0].focus();

Appel focus sur les événements feux d'objets associés à jQuery focus. Vous devez appeler le focus sur l'élément dom.

+0

Salut Stefan, je n'ai pas eu votre réponse. Pourriez-vous s'il vous plaît expliquer à nouveau. – t0mcat

+0

Salut Stefan, juste essayé votre solution, il n'a pas fonctionné pour moi. Mon exigence est, dès que l'utilisateur appuie sur une touche, que la valeur des touches doit être affichée dans la boîte de saisie. – t0mcat

0

lier un événement de mise au point sur un document.

+0

Salut Praveen, quelque chose comme ça? $ .keydown (function() { $ ('# inputScanner'). focus(); }); – t0mcat

+0

Nah. Il veut dire $ (document) .keydown(). Vous aurez probablement encore besoin de modifier votre appel pour se concentrer comme je l'ai montré dans mon post. –

1

Soit fermer la balise (</center>), ou mettre la classe "outerBody" sur une div, Ou:

<script language="javascript"> 
$(function() 
{ 
    $('.scroll-pane').jScrollPane(); 
    $('#tab1,#tab2,#scroll-pane').keydown(function() { 
     $('#serialCode').focus();  
    }); 
}); 
</script> 
+0

Salut Nico, Centre remplacé avec DIV, ne fonctionne toujours pas – t0mcat

+0

Essayé cette approche, $ ('# tab1, # tab2, # scroll-volet'). Keydown (function() { Ne fonctionne pas non plus, le focus ne va que pour l'entrée champ, si je clique à l'intérieur de la DIV – t0mcat

+0

votre problème est keydown ne se déclenche pas pour un contexte, sauf si vous êtes concentré sur un élément qui peut avoir le focus sur ce contexte, je suis sûr que si vous ajoutez une entrée à l'une des tables et appuyez sur une touche sur elle, il vous faudra l'entrée du code série – bevacqua