3

コードは次のとおりです。

$("input[type='text']").on('input', function() { ...stuff here... });  //first function

$('input[type="text"]').click(function() {  //second function
  $('#keyboard').show();
  $('#keyboard .letter').click(function() {
    var currentValue = $('input[type="text"]').val();
    alert(currentValue);
    $('input[type="text"]').val( currentValue + $(this).text() );
  });
});

短いバージョンでは、このテキスト入力を入力すると、top関数が起動します。2番目の関数では、キーボードを表示し、ユーザーのクリックに基づいて入力の値を変更します。ただし、2番目の関数を使用して入力値を変更した場合、最初の関数は実行されません。何か案は?とても有難い。

4

1 に答える 1

14
$("input[type='text']").trigger('input');

それを2番目の関数に入れます。javascriptを使用してテキストボックスの値を設定するだけでは、入力イベントはトリガーされないため、入力イベントハンドラーは起動しません。このシナリオでは、そのイベントハンドラーを手動でトリガーする必要があります。

注:入力イベントハンドラーは使用しないでください。このリンクを参照して、ブラウザのひどい互換性を確認してください。https://developer.mozilla.org/en-US/docs/DOM/window.oninput。代わりに、変更イベントの方が適している可能性があります。

于 2013-03-13T15:15:08.213 に答える