2009-04-30 7 views
6

Comment envoyer une touche de déclenchement d'un code de clé particulier, par ex. "9" événement sur un TextBox utilisant JQuery par programme?Comment envoyer un déclencheur de pression de touche à l'aide de JQuery

Ce que j'ai l'intention de faire; Entrez par programme une valeur dans un TextBox, puis déclenchez par programme une tabulation sur le TextBox pour quitter le champ.

mon code

$("#tags1").val("comp") // Works well 

$("#tags1").trigger("keypress",[9]); // Fails!! 

Gath

Répondre

6

Les documents jQuery déclarent que cela ne fera que passer les attributs événement normalisé = les propriétés de l'objet jQuery.Event, qui ne semblent pas inclure event- données spécifiques.

J'ai essayé, et ne pouvait pas obtenir d'insérer du texte dans une zone de texte, même lors de la réutilisation d'un objet événement qu'un navigateur créé keypress, il ne semble pas être possible.

Pourquoi ne pouvez-vous changer juste la valeur de la zone de texte et appeler flou() pour en sortir? (Ou focus() sur celui que vous voulez entrer ensuite?)

3

Pas exactement ce que vous avez demandé, mais au lieu d'utiliser keypress cela pourrait accomplir ce que vous voulez:

$("#tags1").blur(); 

ou même

$("#tags1").next().focus(); 
1

Essayez:

$("#tags1").val("comp").trigger("keypress",[9]); 

ou

$("#tags1").val("comp").trigger("keypress", [{ 
    preventDefault:function(){}, 
    keyCode:9 
    }]); 
-1

Essayez ceci:

$('textarea:input').live('keypress', function(e) { 
    if (e.keyCode == 9) { 
     e.preventDefault(); 

     // Press TAB to append a string (keeps the original TEXTAREA text). 
     $(this).append("TAB TAB TAB AFTER TEXTAREA TEXT"); 

     // Press TAB to append a string (keeps the original TEXTAREA text). 
     $(this).focus().prepend("TAB TAB TAB BEFORE TEXTAREA TEXT"); 

     // Press TAB to replace a all text inside TEXTAREA. 
     $(this).val("INSERT INTO TEXTAREA/REPLACE EXISTING TEXT"); 

    } 
}); 

Si vous voulez ajouter du texte à l'intérieur la zone de texte (par le curseur actif - comme CTRL + V), vous pouvez utiliser "Tabby"(JS source code) (plugin jQuery - 254 lignes de code ..!).

Vous pouvez également trouver l'inspiration dans le YUI editor qui vous permettra d'ajouter TABs dans l'éditeur.

0

Si vous wan pour ajouter une valeur à une entrée/textarea puis le feu l'événement keypress « enter ».

Trigger comme ça

$('input').val(input_value).blur(); 
1

Je créé un simple jQuery plugin qui ne résout ce problème. Il utilise le sélecteur ': tabbable' de l'interface utilisateur jQuery pour trouver l'élément 'tabbable' suivant et le sélectionne.

Exemple d'utilisation:

// Simulate tab key 
$.tabNext(); 
Questions connexes