7

問題:blurおよびkeyupイベントがそれぞれ onload で 1 回起動し、onload のみが起動します。それらを正しく機能させるにはどうすればよいですか?

jQuery:

function myFunction(text){
    alert(text);
}
$('#input1').on({
    keyup: myFunction('keyup'),
    blur: myFunction('blur'),
    focus: function(){console.log('focus!');}
});

フィドル: https://jsfiddle.net/GrMQX/

4

5 に答える 5

13

keyupとに関数を割り当てているのではなくblur、 の実行結果を割り当てていますmyFunction

次のように変更します。

$('#input1').on({
    keyup: function() { myFunction('keyup'); },
    blur:  function() { myFunction('blur'); },
    focus: function() { console.log('focus!'); }
});

デモ

于 2013-05-20T16:40:54.433 に答える
6

関数をコールバックとして宣言するのではなく、それらを実行し、その戻り結果がコールバックとして割り当てられます (これは機能しません)。

これを試して:

  $('#input1').on({
    keyup: function() { myFunction('keyup') },
    blur: function() { myFunction('blur') },
    focus: function(){console.log('focus!');}
  });
于 2013-05-20T16:40:28.707 に答える
6

関数を引数として渡す必要があります。呼び出された関数の戻り値を渡しています

function myFunction(text){
    alert(text);
}
$('#input1').on({
    keyup: function(){myFunction('keyup');},
    blur: function(){myFunction('blur');},
    focus: function(){console.log('focus!');}
});

myFunctionまたは、関数ジェネレーターに変換できます

function myFunction(text){
   return function(){
       console.log(text);
   }
}

$('#input1').on({
    keyup: myFunction('keyup'),
    blur: myFunction('blur'),
    focus: function(){console.log('focus!');}
});

https://jsfiddle.net/gaby/GrMQX/6/のデモ

于 2013-05-20T16:40:47.060 に答える
4

そのように呼び出すと、実際に関数を実行しています。これを試して:

$('#input1').on({
    keyup: function(){myFunction('keyup')},
    blur: function(){myFunction('blur')},
    focus: function(){console.log('focus!');}
});

JSFiddle の例

于 2013-05-20T16:40:40.540 に答える
0

.on() イベントで使用

$(document).on("keyup blur", "#input1", function(event)
    {       
    // your code        

    });
于 2013-12-31T06:52:07.553 に答える