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

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


当前回答

我就是这么做的。

$("input[name='title']").on({
    "change keyup": function(e) {
        var slug = $(this).val().split(" ").join("-").toLowerCase();
        $("input[name='slug']").val(slug);
    },
});

其他回答

如果你将同一个事件处理程序附加到几个事件上,你经常会遇到多个事件同时触发的问题(例如,用户在编辑后按tab键;按键、改变和模糊都可能触发)。

听起来你真正想要的是这样的:

$('#ValidatedInput').keydown(function(evt) {
  // If enter is pressed
  if (evt.keyCode === 13) {
    evt.preventDefault();

    // If changes have been made to the input's value, 
    //  blur() will result in a change event being fired.
    this.blur();
  }
});

$('#ValidatedInput').change(function(evt) {
  var valueToValidate = this.value;

  // Your validation callback/logic here.
});

Tatu的答案是我如何直观地做到这一点,但我在Internet Explorer中遇到了一些问题,这种嵌套/绑定事件的方式,即使它是通过.on()方法完成的。

我还不能准确地指出问题出在jQuery的哪个版本上。但我有时会在以下版本中看到问题:

2.0.2 1.10.1 1.6.4, 移动1.3.0b1 移动1.4.2 移动1.2.0

我的解决方法是先定义函数,

function myFunction() {
    ...
}

然后分别处理这些事件

// Call individually due to IE not handling binds properly
$(window).on("scroll", myFunction);
$(window).on("resize", myFunction);

这不是最漂亮的解决方案,但它适合我,我想我会把它放在那里,以帮助其他可能偶然发现这个问题的人

而不是:

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

你可以使用:

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

输入触发键up键按模糊改变事件,甚至粘贴!

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

var foo = function() {...}

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

$('#selector').on('keyup keypress blur change paste cut', foo);

是否有一种方法可以让按键、按键、模糊和更改事件在一行中调用相同的函数?

可以使用.on(),它接受以下结构:.on(events [, selector] [, data], handler),因此您可以将多个事件传递给该方法。在你的例子中,它应该是这样的:

$('#target').on('keyup keypress blur change', function(e) {
    // "e" is an event, you can detect the type of event using "e.type"
});

下面是一个活生生的例子:

$(" #目标”)。On ('keyup keypress blur change',函数(e) { console.log(' ' ${e.type.toUpperCase()}"事件发生') }); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本> <输入id = "目标" >