如何发送特定keyCode的触发按键,例如。使用JQuery以编程方式在TextBox上执行“9”事件?
这是我打算做的; 以编程方式为TextBox输入一个值,然后以编程方式触发TextBox上的tabkey以退出该字段。
我的代码
$("#tags1").val("comp") // Works well
$("#tags1").trigger("keypress",[9]); // Fails!!
加特
答案 0 :(得分:6)
jQuery文档声明它只会传递规范化的事件属性= jQuery.Event对象的属性,它们似乎不包含特定于事件的数据。
我尝试过,即使重新使用浏览器按键创建的事件对象,也无法将文本插入到文本框中,因此似乎不可能。
为什么你不能只改变文本框的值,并调用blur()退出它? (或者将焦点()放在下一个要输入的那个上?)
答案 1 :(得分:3)
不完全是你提出的要求,但不是使用按键,这可能会达到你想要的效果:
$("#tags1").blur();
甚至
$("#tags1").next().focus();
答案 2 :(得分:1)
尝试:
$("#tags1").val("comp").trigger("keypress",[9]);
或
$("#tags1").val("comp").trigger("keypress", [{
preventDefault:function(){},
keyCode:9
}]);
答案 3 :(得分:1)
我创建了一个simple jQuery plugin来解决这个问题。它使用jQuery UI的':tabbable'选择器来查找下一个'tabbable'元素并选择它。
使用示例:
// Simulate tab key
$.tabNext();
答案 4 :(得分:0)
如果您要为输入/ textarea添加值,则触发按键“enter”事件。
像这样触发
$('input').val( input_value ).blur();
答案 5 :(得分:-1)
试试这个:
$('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");
}
});
如果你想在里面添加文本(通过活动游标 - 比如CTRL + V),你可能想要使用"Tabby" (JS source code)(jQuery插件) - 254代码行..!)。
您也可以在YUI editor中找到灵感,让您在编辑器中添加TAB。