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

时间:2009-04-30 14:06:18

标签: jquery html

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

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

我的代码

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

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

加特

6 个答案:

答案 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。