10
votes

Comment simuler l'onglet sur Entrer KeyPress dans JavaScript ou JQuery

Je veux changer de code-clé en clé (touche appuyez sur la touche) dans toutes les entrées dans une page.Je veux remplacer Entrer le code-clés avec le code de clé d'onglet. Comment je peux faire cela?

MERCI P>


EDIT 1) P>

Considérez ce code: P>

<div>
    <asp:RadioButtonList ID="RadioButtonList1" runat="server">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
        <asp:ListItem>4</asp:ListItem>
    </asp:RadioButtonList>
    <br />
    <br />
    <asp:TextBox ID="TextBox1" runat="server">3333</asp:TextBox>
    <br />
    <br />
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
    </asp:DropDownList>
</div>


3 commentaires

Vous pouvez trouver une question similaire à Stackoverflow.com/Questtions/1009808/...


Je pense que cela vaut la peine de constater que changer le comportement des navigateurs par défaut comme celui-là n'est généralement pas une bonne idée. Il va à l'encontre de ce que les utilisateurs s'attendent à ce que la clé soit enfoncée.


@Christofereliassson: Cela dépend de ce que vous ciblez, bien sûr. Si vous pouvez éduquer vos utilisateurs (par exemple, s'ils sont dans la salle), une très bonne amélioration du flux de travail pourrait être une très bonne amélioration de la flux de travail.


8 Réponses :


2
votes

J'espère que cela fonctionne xxx pré>

edit p>

Essayez ceci http.com : //jsfiddle.net/gumug/ . Jouez avec des sélecteurs pour faire ce travail car je ne connais pas ASP P>

$('input,textarea').keypress(function(e){
    if(e.keyCode==13) {
   $(this).next().focus();
  }
});


2 commentaires

@Web Developer La deuxième option ne fonctionnera que si l'élément suivant est entré et non rien d'autre que l'étiquette, etc.


La première solution (changer le code-clés) ne fonctionne plus. :-(




2
votes
$('input').on('keydown',function(e){
    var keyCode = e.keyCode || e.which;
     if(e.keyCode === 13) {
      e.preventDefault();
      $('input')[$('input').index(this)+1].focus();
      }
});
check fiddle here : http://jsfiddle.net/Pd5QC/

0 commentaires

0
votes

Je pense que ce travail: xxx


0 commentaires

6
votes

J'ai eu un problème similaire, où je voulais appuyer sur + kbd> sur le numpad à l'onglet dans le champ suivant. Maintenant, j'ai publié une bibliothèque que je pense vous aidera.

Plusastab : un plugin JQuery pour utiliser la touche NUMPAD Plus comme clé de tabulation équivalente. BlockQuote>

Depuis que vous voulez Entrez kbd> / ↵ kbd>, vous pouvez définir les options. Découvrez quelle touche que vous souhaitez utiliser avec le JQUERY Event.qui Démo . P > xxx pré>

activez la fonctionnalité en ajoutant plus-as-onglet = "true" code> dans les champs de formulaire que vous souhaitez utiliser Entrée-as-tab dans ou un autre élément contenant ces champs de forme. Les boutons radio ne doivent pas être un problème, car ils sont couverts par mon autre bibliothèque, EmulateTab - voir Autonavigation de boutons radio dans cette démo . P>

<div plus-as-tab="true">
  <!-- all focusable elements inside the <div> will be enabled -->
  <asp:RadioButtonList ID="RadioButtonList1" runat="server">
    <!-- Radio buttons should not be a problem. -->
  </asp:RadioButtonList>
</div>


2 commentaires

J'aime votre bouchon dans Joel, mais cela ne semble pas porter une attention particulière à Tabindex lors de l'utilisation de la saisie d'un échantillon d'onglet. :(


@Eddegagne: Tabindex est ignoré par design - voir Skiontab Versus tabindex . Devrait probablement écrire quelque chose de similaire ou de lien vers cette page de Plusastab et d'EmulateTab.



1
votes

La façon dont je le fais consiste à utiliser jQuery à chacun sur votre sélection et en vous concentrant sur l'élément après que le courant vous apparaisse.

$(document).on('keyup', '.my-input', function (ev) {

    if (ev.keyCode == '13') {
        var currentInput = this;
        var isOnCurrent = false;

        $('.my-input').each(function () {

            if (isOnCurrent == true) {
                $(this).focus();
                return false;
            }

            if (this == currentInput) {
                isOnCurrent = true;
            }

        });
    }
});


0 commentaires

0
votes

J'ai créé un plug-in simple jQuery qui résout ce problème. Il utilise le sélecteur ': Tabbable' de JQuery UI pour trouver l'élément "Tabbable" suivant et le sélectionnera.

Exemple d'utilisation: P>

// Simulate tab key when enter is pressed           
$('.myElement').bind('keypress', function(event){
    if(event.which === 13){
        if(event.shiftKey){
            $.tabPrev();
        }
        else{
            $.tabNext();
        }
        return false;
    }
});


0 commentaires

0
votes
$(document).ready(function() {

//Objetos con CssClass="EntTab" sustituye el Enter (keycode 13) por un Tabulador (keycode 9)!!

    $(".EntTab").bind("keypress", function(e) {
        if (e.keyCode == 13) {
            var inps = $("input, select"); //add select too
            for (var x = 0; x < inps.length; x++) {
                if (inps[x] == this) {
                    while ((inps[x]).name == (inps[x + 1]).name) {
                        x++;
                    }
                    if ((x + 1) < inps.length) $(inps[x + 1]).focus();
                }
            } e.preventDefault();
        }
    });
});

0 commentaires