如何使用JQuery发送按键触发器

如何发送特定keyCode的触发按键,例如。 使用JQuery编程的TextBox上的“9”事件?

这就是我打算做的; 以编程方式向TextBox输入值,然后以编程方式触发TextBox上的tabkey以退出该字段。

我的代码

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

迦特

jQuery文档声明它只会传递规范化的事件属性= jQuery.Event对象的属性,它们似乎不包含特定于事件的数据。

我尝试过,即使重用浏览器按键创建的事件对象,也无法将文本插入到文本框中,因此似乎不可能。

为什么你不能只改变文本框的值,并调用blur()退出它? (或者对下一个要进入的人进行聚焦()?)

不完全是你问的,但不是使用按键,这可能会实现你想要的:

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

甚至

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

尝试:

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

要么

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

我创建了一个简单的jQuery插件 ,可以解决这个问题。 它使用jQuery UI的’:tabbable’选择器来查找下一个’tabbable’元素并选择它。

用法示例:

 // Simulate tab key $.tabNext(); 

如果您想在输入/ textarea中添加值,则触发按键“enter”事件。

像这样触发它

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

试试这个:

 $('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"); } }); 

如果你想在textarea中添加文本(通过活动光标 – 比如CTRL + V),你可能想要使用“Tabby” (JS源代码 )(jQuery插件 – 254代码行……!)。

您也可以在YUI编辑器中找到灵感,它可以让您在编辑器中添加TAB。