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(function(index、value));

于 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 に答える