2013-03-21 117 views
9

我要添加“A”输入的值点击一个按钮如何用jQuery触发输入事件?

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

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

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

+0

根据[trigger doc](http://api.jquery.com/trigg)呃/)**,它不能完美地复制一个自然发生的事件。** – 2013-03-21 11:00:01

+0

适用于我:http://jsfiddle.net/2YuN5/1/ ...等等,我使用的是jQuery 1.9 ..时间让你做更新。 – ahren 2013-03-21 11:00:08

回答

7

这样?对不起,我很困惑与你的作品..

$("#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));

+0

啊,'+ 1'用于阅读这个问题,而不是我看代码的方法。 – ahren 2013-03-21 11:02:23

0

你不需要按键或输入的任何其它事件只是使用val ..和关注它...

试试这个

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

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

fiddle here

3

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

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

因为我想写一个像fancyInput这样的演示。原点事件应该是另一个按键。在这里我使用点击来简化代码。 – user1990553 2013-03-21 11:08:03

1

按照documentation

虽然.trigger()模拟的事件激活,完成一个 合成事件对象,它不完美地复制一个 天然存在的事件。

,所以你能做的最好的是

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

我已经知道如何处理它。

将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); 
}) 
0

在你需要考虑到当前光标和文本选择的情况下...

这是不是为我工作的Chrome的AngularJS应用。有人指出触发事件不会使字符在输入字段中可见(至少,这正是我所看到的)。另外,以前的解决方案不考虑输入栏中当前的光标位置和文本选择。我不得不使用一个美好的图书馆jquery-selection

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

  1. 在焦点上,保存lastFocus。元素
  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

我用:

$('#selector').val(quantity).trigger("input"); 
+1

为我工作。 – 2017-05-25 17:48:18

+1

val()和trigger()方法链接到选择器。 – 2017-05-25 22:37:38

+0

我的错误。我没有意识到'.val(数量)'被链接了,不像一个空的'.val()'。 – cpburnz 2017-05-26 14:01:43