如何使用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。