jQuery .on keyup和blur only onload only only

时间:2013-05-20 16:37:59

标签: jquery jquery-on

问题: blurkeyup事件每次触发一次,只有onload。我怎样才能使它们正常工作?

jQuery的:

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

小提琴:http://jsfiddle.net/GrMQX/

5 个答案:

答案 0 :(得分:13)

您没有为keyupblur分配功能,而是指定执行myFunction的结果。

像这样改变:

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

DEMO

答案 1 :(得分:6)

你没有将这些函数声明为回调,你正在执行它们,并且它们的返回结果被指定为回调(它不起作用)。

试试这个:

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

答案 2 :(得分: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!');}
});

演示 http://jsfiddle.net/gaby/GrMQX/6/

答案 3 :(得分:4)

当你以这种方式调用它们时,你实际上正在执行这些函数。试试这个:

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

<强> jsFiddle example

答案 4 :(得分:0)

使用.on()事件

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

    });