1

.trigger()methodEventobjectwhichpropertyJS char コード、および以下のコードに関して、#example入力が chara自動書き込み値として取得しないのはなぜですか? 私は.trigger()方法を誤解しましたか?

<input type="text" name="example" id="example" value="" />

<script>
$(function() {
    var e = jQuery.Event("keydown", { which: 65 });
    $("#example").focus().trigger(e);
});
</script>
4

3 に答える 3

5

あなたが犯している間違いは、jQueryのtriggerメソッドに期待していることです。コードをチェックアウトすると、コードが実際に実行しているのは、DOMレベル3イベントではなくjQueryに登録されたイベントハンドラーであることがわかります。jQueryハンドラーのみを実行しているためchange、テキストボックスのvalueプロパティを更新するためにトリガーする必要があるイベントが発生することはありません。

于 2012-05-21T12:55:14.140 に答える
0

ドキュメントによると

対応するイベントが発生すると、.bind() またはそのショートカット メソッドの 1 つに関連付けられたイベント ハンドラーがトリガーされます。

$('#foo').bind('click', function() {
  alert($(this).text());
});
$('#foo').trigger('click');

あなたの場合、それは次のようになります。

$('#example').bind('keydown', function(e) {
  alert("Pressed: " + e.keycode());
});
$('#example').focus().trigger('click');
于 2012-05-21T13:01:56.033 に答える
0

単純化しすぎかもしれませんが、単純.val()に入力フィールドの (値) を変更してシミュレートすることはできませんauto-written valuesか?

次のように値を設定するだけです-

$("#example").val('Some auto-written value');

このようなもう少し視覚的なことを行うことができます-

var autoText = ['f','o','o','b','a','r'];
var characterIndex = 0;
var autoType = setInterval(function(){
  $("#example").val( $("#example").val() + autoText[characterIndex] );
  characterIndex++;
  if (characterIndex >= autoText.length){
    clearInterval(autoType);
  }
},_keystroke_interval);

_keystroke_interval、自動入力された文字間の間隔 (ミリ秒単位) です。autoType間隔変数は、autoText配列のすべてのインデックスを反復処理し、反復ごとに入力フィールドに 1 文字を追加します。

これにより、オートタイピングの感覚が増します...

これが実際のjsFiddleの例です

于 2012-05-21T13:08:04.283 に答える