2016-06-07 4 views
0

J'essaie de simuler la touche fléchée gauche et droite dans une zone de texte dans un contrôle de grille rad (Telerik).Déclenchement JavaScript ou jquery Flèche directionnelle de la touche fléchée gauche (Simuler la touche fléchée)

J'ai un bug qui est spécifique au navigateur Firefox où l'onglet événement (cette partie est fixée) et les touches fléchées ne fonctionneront pas. Tous les autres navigateurs fonctionnent bien. Donc, comme une solution de contournement, je veux simuler les touches fléchées en utilisant JavaScript ou jQuery.

Ci-dessous est ce que je travaille avec le correctif d'événement onglet inclus. En plus de cela, je vérifie si le code clé 37 (c'est la touche fléchée gauche) est enfoncé. À ce stade, je veux simuler la flèche gauche dans la zone de texte.

$(document).on('keydown', function (event) { 
    if (event.keyCode == 9) { //tab pressed 
     event.preventDefault(); // stops default action 
    } 
}); 

$('body').keyup(function (e) { 

    var code = e.keyCode || e.which; 

    //Left arrow key press 
    if (code == '37') 
    { 
     moveLeft();// This does not trigger the left arrow event 
    } 

    //Tab button pressed 
    if (code == '9') { 
     //shift was down when tab was pressed focus -1 
     if (e.shiftKey && code == 9) {          
      var focused = $(':focus'); 
      var inputs = $(focused).closest('form').find(':input'); 
      inputs.eq(inputs.index(focused) - 1).focus(); 
     } 
     //tab was pressed focus +1 
     else { 
      var focused = $(':focus'); 
      var inputs = $(focused).closest('form').find(':input'); 
      inputs.eq(inputs.index(focused) + 1).focus();         
      } 
    }  
}); 

Toute aide à ce sujet serait apprécié

+0

Si vous ne voulez que je pense ne pas faire ce code vous-même, vous pouvez utiliser cette bibliothèque (https://craig.is/killing/mice) peut vous aider à accomplir ce dont vous avez besoin. – EpaXapate

Répondre

2

Je suis arrivé ce travail en déplaçant le curseur d'un espace, voici le code que j'utilisé pour simuler la presse flèche gauche.

Remarque - Pour simuler à droite, le code de clé est 39 et définissez la propriété myval sur -1.

$('body').keydown(function (e) { 

    var code = e.keyCode || e.which; //Find the key pressed 

    if (code == '37') { 

      e.preventDefault(); // stop default action 
      var elementId = e.target.id;// get id of input text area          

      var el = document.getElementById(elementId), 
      myval = 1 // set mouse cursor to move back one space 
      cur_pos = 0; 

      if (el.selectionStart) { 
       cur_pos = el.selectionStart; 
      } 
      else if (document.selection) { 
       el.focus(); 

       var r = document.selection.createRange(); 
       if (r != null) { 
        var re = el.createTextRange(), 
        rc = re.duplicate(); 
        re.moveToBookmark(r.getBookmark()); 
        rc.setEndPoint('EndToStart', re); 

        cur_pos = rc.text.length; 
       } 
      } 

      if (el.setSelectionRange) { 
       el.focus(); 
       el.setSelectionRange(cur_pos - myval, cur_pos - myval); 
      } 
      else if (el.createTextRange) { 
       var range = el.createTextRange(); 
       range.collapse(true); 
       range.moveEnd('character', cur_pos - myval); 
       range.moveStart('character', cur_pos - myval); 
       range.select(); 
      } 
} 
+0

Ce code déplace le curseur d'une position à la position précédente ou suivante. Mais lorsque le curseur dépasse la zone visible de la zone de texte ou de la zone de texte, le défilement de la position du curseur mise à jour ne se produit pas. –