23

单击按钮时,我想在输入值中添加“a”

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

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

但是,它似乎只触发了“焦点”事件,而未能“按键”。

4

8 回答 8

41

我使用了触发方法:

$('#selector').val(quantity).trigger("input");
于 2017-05-25T10:22:49.920 回答
15

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

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

参考:.val(函数(索引,值));

于 2013-03-21T11:00:42.317 回答
4

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

$("#button").click(function(){
  $("#input").val(
    $("#input").val() + "a"
  );
})
于 2013-03-21T11:01:32.347 回答
3

我已经知道如何处理它了。

将 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);
})
于 2013-03-21T11:05:21.820 回答
1

根据文档

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

所以你能做的最好的就是

$("#button").click(function(){
    $("#input").trigger("focus").val($("#input").val() + 'a');
})
于 2013-03-21T11:03:48.100 回答
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'})
    
于 2015-02-04T06:04:29.153 回答
0

尝试这个 :

$("#triggerbtn").click(function(){
$("#InputField").trigger("keypress")
.val(function(i,val){
return val + 'j';
});
});
于 2020-09-15T10:48:15.537 回答
-1

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

尝试这个

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

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

在这里摆弄

于 2013-03-21T11:01:12.223 回答