是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数,或者我必须分别执行它们?

我的问题是,我需要验证一些数据与数据库查找,并希望确保验证不错过在任何情况下,无论是键入或粘贴到框。


当前回答

你可以使用.on()将一个函数绑定到多个事件:

$('#element').on('keyup keypress blur change', function(e) {
    // e.type is the type of event fired
});

或者只是将函数作为参数传递给普通的事件函数:

var myFunction = function() {
   ...
}

$('#element')
    .keyup(myFunction)
    .keypress(myFunction)
    .blur(myFunction)
    .change(myFunction)

其他回答

你可以这样定义你想重用的函数:

var foo = function() {...}

之后,你可以在你的对象上设置任意数量的事件监听器来触发该函数,使用on('event'),在中间留出一个空间,如下所示:

$('#selector').on('keyup keypress blur change paste cut', foo);
$("element").on("event1 event2 event..n", function() {
   //execution
});

本教程是关于处理多个事件的。

可以使用bind方法将函数附加到多个事件。只需要传递事件名称和处理函数,如下所示:

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

另一个选择是使用jquery api的链接支持。

用内置的DOM方法实现这个很简单,不需要像jQuery这样的大库,如果你想,它只需要更多的代码-迭代一个事件名称数组,并为每个事件添加一个侦听器:

function validate(event) {
  // ...
}

const element = document.querySelector('#element');
['keyup', 'keypress', 'blur', 'change'].forEach((eventName) => {
  element.addEventListener(eventName, validate);
});

如果你想模拟添加多个元素:

const elements = document.querySelectorAll('.commonSelector');
['keyup', 'keypress', 'blur', 'change'].forEach((eventName) => {
  elements.forEach(element => {
      element.addEventListener(eventName, validate);
  });
});

你可以使用.on()将一个函数绑定到多个事件:

$('#element').on('keyup keypress blur change', function(e) {
    // e.type is the type of event fired
});

或者只是将函数作为参数传递给普通的事件函数:

var myFunction = function() {
   ...
}

$('#element')
    .keyup(myFunction)
    .keypress(myFunction)
    .blur(myFunction)
    .change(myFunction)