如何使用jQuery触发输入事件?

时间:2013-03-21 10:57:03

标签: jquery triggers

我想在点击按钮时将'a'添加到输入值

这是我的代码(使用jQuery 1.4.4):

$("#button").click(function(){
    $("#input").trigger("focus");
    var e = jQuery.Event("keypress");
    e.which = '97';
    $("#input").trigger(e);
})

然而,它似乎只是触发'焦点'事件,但未能'按键'。

8 个答案:

答案 0 :(得分:18)

我用过:

list($pdf_platform_size, $pdf_capacity ,$pdf_accuracy) = array_map('trim', explode(' - ', $pdf_select_specification));

答案 1 :(得分:12)

像这样?对不起,我对你的着作感到困惑..

$("#button").click(function(){
    $("#input").trigger("keypress") // you can trigger keypress like this if you need to..
    .val(function(i,val){return val + 'a';});
});

参考:.val(function(index, value));

答案 2 :(得分:4)

为什么不只是附加到val()

$("#button").click(function(){
  $("#input").val(
    $("#input").val() + "a"
  );
})

答案 3 :(得分:2)

我知道如何处理它。

将keypress事件的eventListener添加到输入并使用val更改值。

这样就不需要触发焦点事件了。

$("#button").click(function(){
    var e = jQuery.Event("keypress");
    e.chara = 'a';
    $("#input").trigger(e);
});

$("#input").keypress(function(e){
    $(this).val(e.chara);
})

答案 4 :(得分:1)

根据documentation

  

虽然.trigger()模拟事件激活,但完成了   合成事件对象,它不能完美复制一个   自然发生的事件。

所以你能做的最好的就是

$("#button").click(function(){
    $("#input").trigger("focus").val($("#input").val() + 'a');
})

答案 5 :(得分:0)

如果您需要考虑当前光标和文本选择...

这对我来说不适用于Chrome上的AngularJS应用。有人指出触发事件不会使字符在输入字段中可见(至少,这就是我所看到的)。此外,先前的解决方案没有考虑输入字段中的当前光标位置和文本选择。我不得不使用一个很棒的图书馆jquery-selection

我有一个自定义的屏幕数字小键盘,可以填充多个输入字段。我不得不......

  1. 在焦点上,保存lastFocus.element
  2. 在模糊时,保存当前文本选择(开始和停止)

    var pos = element.selection('getPos')
    lastFocus.pos = { start: pos.start, end: pos.end}
    
  3. 按下我的键盘上的按钮时:

    lastFocus.element.selection( 'setPos', lastFocus.pos)
    lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
    

答案 6 :(得分:0)

尝试一下:

$("#triggerbtn").click(function(){
$("#InputField").trigger("keypress")
.val(function(i,val){
return val + 'j';
});
});

答案 7 :(得分:-1)

您不需要按键或任何其他输入事件只需使用val ..并将其集中......

试试这个

 $("#button").click(function(){

   $("#input").val('a').focus();
})

fiddle here