2013-03-21 125 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